xen*_*ide 35 command-line logs text-processing output text-formatting
邮件日志非常难以阅读。如何在命令行上打印的每一行之间输出一个空行?例如,假设我正在搜索日志。这样,多条包装线就不会被混淆。
Chr*_*sen 59
sed G
# option: g G Copy/append hold space to pattern space.
Run Code Online (Sandbox Code Playgroud)
G不经常使用,但非常适合此目的。sed维护两个缓冲区空间:“模式空间”和“保持空间”。通过处理的线的sed通常流经图案空间的各种命令其内容(操作s///,p等); 保持空间一开始是空的,只被某些命令使用。
该G命令将换行符和保留空间的内容附加到模式空间。上面的sed程序从未在保留空间中放置任何内容,因此G有效地仅在处理的每一行后附加一个换行符。
使用 awk 添加额外的换行符。这还可以让您过滤掉不想要的东西。
awk '{print $0,"\n"}' | less
Run Code Online (Sandbox Code Playgroud)
使用 sed 并单独替换整行加上一个额外的换行符:
grep foo /var/log/maillog | sed -e "s/^.*$/&1\n/"
Run Code Online (Sandbox Code Playgroud)