我怎样才能让 grep 使用 CRLF(而不是 LF)作为换行符?

我怎样才能让 grep 使用 CRLF(而不是 LF)作为换行符?

我需要 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(记录分隔符)变量来更改行终止符

相关内容