在数组 bash 数组中搜索和替换不区分大小写

Case insensitive search and replace in array bash array

我学会了 here 使用数组在数组中搜索和替换。

事情是这样的。

declare -a Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora');
echo ${Unix[@]/Red*/}

# Output will be
Debian Ubuntu Suse Fedora

在上面的代码片段中,标志 a 用于不区分大小写的搜索。即我想用 "red" 而不是 "Red" 进行搜索。

只需将 rR 放在字符 class [].

$ declare -a Unix=('Debian' 'red hat' 'Ubuntu' 'Suse' 'Fedora');
$ echo ${Unix[@]/[rR]ed*/}
Debian Ubuntu Suse Fedora

您可以在此处使用 printfgrep -i

printf "%s\n" "${Unix[@]}" | grep -iv Red
Debian
Ubuntu
Suse
Fedora

printf "%s\n" "${Unix[@]}" | grep -iv red
Debian
Ubuntu
Suse
Fedora

更新: 单行输出:

printf "%s\n" "${Unix[@]}" | grep -iv red | tr '\n' ' '; echo
Debian Ubuntu Suse Fedora