Мне нужно выполнить поиск в файле, где строки не только заканчиваются CRLF, но и могут содержать несколько LF в каждой строке. Как я могу заставить grep игнорировать LF, если перед ними нет CR? К вашему сведению, я использую OS X, поэтому было бы полезно иметь инструкции BSD grep.
2 ответа
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.
0
Я думаю, что вам нужно использовать вместо awk.
В awk есть переменная RS (Records Seperator) для изменения ограничителя строки