显示文件中 CRLF 出现的确切次数

use*_*159 3 grep text-processing newlines

grep -c $'\r\n' file 返回完全相同的数字 grep -c $'\n' file,它显示文件中 LF 的数量而不是 CRLF 的数量。(该文件肯定不包含该数量的 CRLF。)如何确定 CRLF 出现的确切数量?

我尝试了以下命令,但没有一个返回正确的数字:

grep -c $'\r\n' file
grep -c $"\r\n" file
grep -c '\r\n' file
grep -c "\r\n" file
Run Code Online (Sandbox Code Playgroud)

Gil*_*il' 5

grep 的模式参数实际上是一个以换行符分隔的模式列表。因此grep $'\r\n'搜索 CR 或空模式(匹配每一行)。这与grep $'\n'搜索空模式或空模式相同。

要搜索 CRLF 序列,请在行尾搜索 CR。

grep -c $'\r$' file
Run Code Online (Sandbox Code Playgroud)

  • @ user367890 如果最后一个字节不是换行符,则该文件不是文本文件,因此行为取决于 grep 实现。使用 GNU grep,`grep $'\r$'` 确实会在文件末尾找到一个 CR。 (2认同)