Как использовать команду sed для чтения, чтобы вернуть ошибку, если одна из строк имеет несоответствующий шаблон? - PullRequest
0 голосов
/ 08 октября 2018

Я пытался найти любое несоответствие в каждой строке, используя sed комментарий.Если какая-либо строка не соответствует шаблону, вернуть 1, если все строки успешны.Это выглядит по шаблону -.У меня есть команда sed следующим образом:

sed -n -E '/([a-zA-Z ]+-[0-9]+)/ p'

успешный случай:

u-3 abaklsd
a-2 jkds

неудачный случай:

u-3 abaklsd
a-2 jkds
khs jkd

1 Ответ

0 голосов
/ 09 октября 2018

sed не имеет возможности для этого.Вы, вероятно, можете реорганизовать свой скрипт в Perl с небольшим усилием.

perl -ne 'if (/[a-zA-Z ]+-\d+/) { print } else { $rc=1; }
    exit $rc if (eof)'

Или Awk:

awk '{ if (/[a-zA-Z +-[0-9]+/) print; else rc=1 }
    END { exit rc }'

Скобки лишние, поэтому я их убрал.Возможно, вы хотите использовать ведущие ^ и конечные $ якоря в регулярном выражении.

...