Как я могу заставить grep использовать CRLF (а не LF) в качестве новой строки?
Мне нужно выполнить поиск в файле, где строки не только заканчиваются CRLF, но и могут содержать несколько LF в каждой строке. Как я могу заставить grep игнорировать LF, если перед ними нет CR? К вашему сведению, я использую OS X, поэтому было бы полезно иметь инструкции BSD grep.
2 ответа
Я не вижу способа сделать это, используя только grep
, но вы могли бы использовать perl
например,
perl -e '$/="\r\n";' -ne 'print if /your_pattern/;' your_filename
или вы могли бы использовать tr
как фильтр вокруг grep
например,
tr '\n\r' '\0\n' < your_filename | grep -a your_pattern | tr '\0\n' '\n\r'
Последний предполагает, что ваш файл еще не содержит NUL.
Я думаю, что вы должны использовать вместо этого awk.
В awk есть переменная RS (Records Seperator) для изменения ограничителя строки