Как найти строку, запускающуюся с и заканчивающуюся 'c', использующим grep?

Мне назвали файл newfile. Содержание этого файла:

abc
xyz
abc

Теперь я хочу найти строки, которые запускаются с a и конец с c. Я ввожу следующую команду, но результатами не является то же как ожидалось мной:

grep -E   '^ac$' newfile

Проблема с этой командой - это, когда я использую ^ac$ команда интерпретирует его как запускающийся с ac вместо того, чтобы запуститься с a.

1
задан 2 May 2018 в 08:46

1 ответ

Проблема с этой командой состоит в том, что, когда я использую ^ac$, команда интерпретирует его как запускающийся с 'ac' вместо того, чтобы запуститься с 'a'.

Не совсем. Так как Вы использовали $ привязка, Вы ищете строки, которые заканчиваются прямо после ac строка, поэтому только строки, содержащие точно единственный ac и больше символов не подобрано.

Для разрешения любых символов между теми буквами используйте regex для любого количества любых символов: .* (Или если Вы хотите позволить всего один символ как в abc в примере использовать . без кванторов как *.)

Между прочим, можно просто не учесть опцию -E для этого regex, так как это не включает синтаксиса, который отличался бы по этим двум вариантам.

Таким образом, результат:

grep '^a.*c$' newfile
5
ответ дан 3 December 2019 в 06:37

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

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