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

Скажем, у меня есть файл, который имеет некоторых ls -l вывод:

waaa- foo.pdf
-bbb- foobar.pdf
-ccc- foobar
waaa- foobar

Я хотел бы получить просто первую строку

waaa -foo.pdf

как конечный результат, и я пробую:

egrep -E "^w" .file | egrep -E "*.pdf"

Там какой-либо путь состоит в том, чтобы объединить эти два поиска?

1
задан 30 July 2017 в 14:09

1 ответ

Необходимо записать это как:

egrep "^w.*\.pdf$" filename
  • Средства, запущенные с w сопровождаемый любым символом и законченный к .pdf.

для логического "или" можно использовать -e переключатель:

egrep -e pattern1 -e pattern2

средства все строки с pattern1 или pattern2.

или как @steeldriver предложенный, используйте расширенный regex "или":

egrep "(pattern1|pattern2)"

и поскольку Вы знаете для расширенных регулярных выражений, необходимо использовать egrep и нет grep, например:

egrep '(bbb|ccc)' # works fine for your file
grep '(bbb|ccc)' # doens't have any result

Для "и" необходимо передать его по каналу другому egrep:

grep pattern1 | grep pattern2

средства все строки с обоими pattern1 и pattern2.

или используйте другого инструменты как awk:

awk '/pattern1/ && /pattern2/` filename
5
ответ дан 3 December 2019 в 06:38

Другие вопросы по тегам:

Похожие вопросы: