Мне назвали файл newfile
. Содержание этого файла:
abc
xyz
abc
Теперь я хочу найти строки, которые запускаются с a
и конец с c
. Я ввожу следующую команду, но результатами не является то же как ожидалось мной:
grep -E '^ac$' newfile
Проблема с этой командой - это, когда я использую ^ac$
команда интерпретирует его как запускающийся с ac
вместо того, чтобы запуститься с a
.
Проблема с этой командой состоит в том, что, когда я использую ^ac$, команда интерпретирует его как запускающийся с 'ac' вместо того, чтобы запуститься с 'a'.
Не совсем. Так как Вы использовали $
привязка, Вы ищете строки, которые заканчиваются прямо после ac
строка, поэтому только строки, содержащие точно единственный ac
и больше символов не подобрано.
Для разрешения любых символов между теми буквами используйте regex для любого количества любых символов: .*
(Или если Вы хотите позволить всего один символ как в abc
в примере использовать .
без кванторов как *
.)
Между прочим, можно просто не учесть опцию -E
для этого regex, так как это не включает синтаксиса, который отличался бы по этим двум вариантам.
Таким образом, результат:
grep '^a.*c$' newfile