删除 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