Удалить слова с заглавными буквами в bash - PullRequest
0 голосов
/ 29 сентября 2018

Как вы удаляете слова в строке в BASH, которые имеют заглавные буквы?Пример.

Ввод:

Taco burrito Mexico fiesta

Ввод:

burrito fiesta

Решение, которое я увидел в Stack Overflow, не работает для меня, так как я использую Linuxработа с не принимает переключатель -r.

Ответы [ 4 ]

0 голосов
/ 29 сентября 2018

Чистый 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
0 голосов
/ 29 сентября 2018
$ echo Taco burrito Mexico fiesta | awk '{gsub(/ (\S*[A-Z]\S*)|(\S*[A-Z]\S* )/, "")}1'
burrito fiesta
0 голосов
/ 29 сентября 2018

Для удовольствия, perl

perl -aE 'say "@{[ grep {not /^[[:upper:]]/} @F ]}"' file
0 голосов
/ 29 сентября 2018

Вы можете использовать это sed:

s='Taco burrito Mexico fiesta'
sed 's/[[:upper:]][^[:blank:]]*[[:blank:]]*//g' <<< "$s"

burrito fiesta

Детали:

  • [[:upper:]]:Соответствует заглавной букве
  • [^[:blank:]]: соответствует любому символу, кроме пробела или символа табуляции
  • [[:blank:]]: соответствует пробелу или символу табуляции
...