使用支持多字符记录分隔符的GNU awk:
awk -v RS='\r\n' 'END{print NR}' file
Run Code Online (Sandbox Code Playgroud)
这会将记录分隔符设置为\r\n并打印记录总数。
例如:
$ echo $'record 1\r\nrecord\n2\r\nrecord 3' > file
$ awk -v RS='\r\n' 'END{print NR}' file
3
Run Code Online (Sandbox Code Playgroud)
对于那些认为此答案不正确的人,让我提出另一个示例。考虑文件:
bash-4.2$ cat -vet file
line 1$
line 2$
line 3bash-4.2$
Run Code Online (Sandbox Code Playgroud)
(shell提示有意留在其中以显示文件末尾)
使用普通的UNIX行结尾,并且文件末尾没有换行符。该文件中有多少条记录?我个人说有3个。但是,只有两个换行符。
您可以使用它grep来计数以结尾的所有行CR/LF:
grep -c $'\r$' file
Run Code Online (Sandbox Code Playgroud)
模式$'\r$'将仅匹配以结尾的行,\r\n并-c为您提供这些行的计数。