在数组 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" 进行搜索。
只需将 r
和 R
放在字符 class []
.
中
$ declare -a Unix=('Debian' 'red hat' 'Ubuntu' 'Suse' 'Fedora');
$ echo ${Unix[@]/[rR]ed*/}
Debian Ubuntu Suse Fedora
您可以在此处使用 printf
和 grep -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
我学会了 here 使用数组在数组中搜索和替换。
事情是这样的。
declare -a Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora');
echo ${Unix[@]/Red*/}
# Output will be
Debian Ubuntu Suse Fedora
在上面的代码片段中,标志 a
用于不区分大小写的搜索。即我想用 "red" 而不是 "Red" 进行搜索。
只需将 r
和 R
放在字符 class []
.
$ declare -a Unix=('Debian' 'red hat' 'Ubuntu' 'Suse' 'Fedora');
$ echo ${Unix[@]/[rR]ed*/}
Debian Ubuntu Suse Fedora
您可以在此处使用 printf
和 grep -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