删除 bash 中大写字母的单词
Delete words with capital letters in bash
如何删除 BASH 字符串中的大写字母?
例如
输入:
Taco burrito Mexico fiesta
输出:
burrito fiesta
我在 Stack Overflow 上看到的解决方案对我不起作用,因为我正在使用的 linux 机器不接受 -r
开关。
你可以使用这个 sed
:
s='Taco burrito Mexico fiesta'
sed 's/[[:upper:]][^[:blank:]]*[[:blank:]]*//g' <<< "$s"
burrito fiesta
详情:
[[:upper:]]
:匹配一个大写字母
[^[:blank:]]
:匹配除 space 或制表符 之外的任何字符
[[:blank:]]
:匹配space或制表符
$ echo Taco burrito Mexico fiesta | awk '{gsub(/ (\S*[A-Z]\S*)|(\S*[A-Z]\S* )/, "")}1'
burrito fiesta
为了好玩,perl
perl -aE 'say "@{[ grep {not /^[[:upper:]]/} @F ]}"' file
纯bash
:
set -- Taco burrito Mexico fiesta ; LC_ALL=C; echo ${@/*[A-Z]*}
或者:
a=(Taco burrito Mexico fiesta) ; LC_ALL=C; echo ${a[@]/*[A-Z]*}
输出(两者之一):
burrito fiesta
如何删除 BASH 字符串中的大写字母? 例如
输入:
Taco burrito Mexico fiesta
输出:
burrito fiesta
我在 Stack Overflow 上看到的解决方案对我不起作用,因为我正在使用的 linux 机器不接受 -r
开关。
你可以使用这个 sed
:
s='Taco burrito Mexico fiesta'
sed 's/[[:upper:]][^[:blank:]]*[[:blank:]]*//g' <<< "$s"
burrito fiesta
详情:
[[:upper:]]
:匹配一个大写字母[^[:blank:]]
:匹配除 space 或制表符 之外的任何字符
[[:blank:]]
:匹配space或制表符
$ echo Taco burrito Mexico fiesta | awk '{gsub(/ (\S*[A-Z]\S*)|(\S*[A-Z]\S* )/, "")}1'
burrito fiesta
为了好玩,perl
perl -aE 'say "@{[ grep {not /^[[:upper:]]/} @F ]}"' file
纯bash
:
set -- Taco burrito Mexico fiesta ; LC_ALL=C; echo ${@/*[A-Z]*}
或者:
a=(Taco burrito Mexico fiesta) ; LC_ALL=C; echo ${a[@]/*[A-Z]*}
输出(两者之一):
burrito fiesta