我需要 grep 一个文件,其中的行不仅以 CRLF 结尾,而且每行可能还有多个 LF。如何让 grep 忽略 LF,除非它们前面有 CR?仅供参考,我使用的是 OS X,因此有 BSD grep 说明会很有帮助。
答案1
我看不出有任何方法可以仅使用 来做到这一点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。
答案2
我认为你需要使用 awk。awk
有 RS(记录分隔符)变量来更改行终止符