打印文件的所有完整行

Mir*_*rek 3 grep files newlines

如何打印文件的所有完整行?我所说的“完整”仅指以换行符结尾的那些。grep将 EOF 视为行分隔符,因此grep '^.*$' file即使文件末尾没有换行符,也会打印最后一行。

整个问题来自解析日志文件:我们需要以某种方式确保最后一个条目被完全记录 - 即它以换行符结尾。

ter*_*don 7

一个简单的方法是使用perl

perl -ne '/\n/ && print' file
Run Code Online (Sandbox Code Playgroud)

如果您只想检查文件的最后一个字符是否为换行符,您可以执行以下操作:

tail -c1 file | grep -q '^$' && echo yes || echo no
Run Code Online (Sandbox Code Playgroud)

但该-c选项不是 POSIX,因此不可移植。