如何在命令行打印的行之间添加换行符?

如何在命令行打印的行之间添加换行符?

邮件日志非常难以阅读。如何在命令行上打印的每一行之间输出一个空行?例如,假设我正在 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将换行符后跟保留空间的内容追加到模式空间。

相关内容