Як я можу змусити греп використовувати CRLF (а не LF) як новий рядок?


1

Мені потрібно проглядати файл, де не тільки рядки закінчуються CRLF, але вони також можуть мати кілька LF у кожному рядку. Як я можу зробити греп ігнорувати НЧ, якщо перед ними не є КР? FYI, я використовую 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.


0

Я думаю, вам потрібно використовувати awk замість цього.
awk має змінну RS (Seperator Records), щоб змінити лінійний термінатор

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.