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

时间:2015-03-23 13:11:05

标签: arrays bash replace case-insensitive

我学会了here关于搜索和使用数组替换数组。

就是这样。

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

# Output will be
Debian Ubuntu Suse Fedora

在上面的代码段中,使用标记a进行不区分大小写的搜索。即我想搜索“红色”而不是“红色”。

2 个答案:

答案 0 :(得分:3)

只需将rR放入角色类[]

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

答案 1 :(得分:1)

您可以在此处使用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