4

Я хоть и знал grep, а может и нет.

Я хочу найти все строки в файле, заканчивающемся на ':' Если я запускаю

grep :$ ~/greptester.txt

но, к моему удивлению, это не дает результатов. Иногда я путаю '^' и '$', когда приходится угадывать, что является началом, а что концом строки, но я проверил, и $ действительно является концом строки.

После долгих раздумий я случайно обнаружил, что бег

grep :.$ ~/greptester.txt

действительно дает ожидаемые результаты. Зачем?

Вот текстовый файл:

test line one
1 line with a colon:
ignore this line
3456 some stuff:
cat: meow; dog: bark; horse: four (4) legs.
goat, 7 elephants

Это происходит как в Ubuntu, так и на Windows-машине с Cygwin.

1 ответ1

6

Ваш файл имеет \r\n (CR+LF) окончания строк (вероятно, созданные в windows?), Тогда как большинство файлов UNIX заканчиваются только \n (LF).

Таким образом, прежде чем grep увидит \n после символа : есть \r которому он должен соответствовать . подстановочные.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .