邮件日志非常难以阅读。如何在命令行上打印的每一行之间输出一个空行?例如,假设我正在 grep 日志。这样,多条换行就不会被混淆。
答案1
sed G
# option: g G Copy/append hold space to pattern space.
G
不常用,但对于这个目的来说很有用。sed维护两个缓冲区空间:“模式空间”和“保持空间”。处理过的行sed当各种命令对其内容进行操作时,通常会流过模式空间(s///
、p
等);保留空间一开始是空的,仅由某些命令使用。
该G
命令将换行符和保留空间的内容附加到模式空间。以上sed程序永远不会在保留空间中放入任何内容,因此G
实际上只在处理的每一行中附加一个换行符。
答案2
使用 awk 添加额外的换行符。这还可以让您过滤掉不想要的东西。
awk '{print $0,"\n"}' | less
答案3
使用 sed 并自行替换整行加上一个额外的换行符:
grep foo /var/log/maillog | sed -e "s/^.*$/&1\n/"
答案4
将|
任何输出传送到:
sed G
例子:
ls | sed G
如果你man sed
会看到
G
将换行符后跟保留空间的内容追加到模式空间。