Использование sed для захвата первого слова заглавными буквами - PullRequest
2 голосов
/ 07 апреля 2020

Мне интересно получить первое слово в предложении, если оно начинается с 5 заглавных букв. Например, если предложение SOLAR eclipse, мне нужно SOLAR. Если предложение SOLA eclipse или solar ECLIPSE или 40 thieves, то ничего.

printf "SOLAR eclipse\nSOLA eclipse\nsolar ECLIPSE\n40 thieves" | sed 's/\(^[A-Z]\{5\}\).*/\1/'
SOLAR
SOLA eclipse
solar ECLIPSE
40 thieves

Как мы видим, извлечение работает только для первого предложения. Я ожидал, что он будет возвращать пустую строку для второго, третьего и четвертого, но он возвращает всю строку.

Ответы [ 2 ]

3 голосов
/ 07 апреля 2020

используя grep

$printf  "SOLAR eclipse\nSOLA eclipse\nsolar ECLIPSE\n40 thieves" | grep -oE  '^[A-Z]{5}'
SOLAR
$
1 голос
/ 07 апреля 2020

С awk не могли бы вы попробовать тоже.

printf "SOLAR eclipse\nSOLA eclipse\nsolar ECLIPSE\n40 thieves" |
awk 'match($0,/^[A-Z]{5}/){print substr($0,RSTART,RLENGTH)}'
...