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


Answers:


52
sed G 
# option: g G    Copy/append hold space to pattern space.

G并不经常使用,但是很适合此目的。sed维护两个缓冲区空间:“模式空间”和“保持空间”。通过处理的线的sed通常流经图案空间的各种命令其内容(操作s///p等); 保留空间开始为空,仅由某些命令使用。

G命令将换行符和保留空间的内容追加到模式空间。上面的sed程序从不将任何内容放在保留空间中,因此G有效地仅将换行符追加到处理的每一行。


3
-e不是必需的。管道whatever | sed G应该可以解决问题。
frabjous

@frabjous:是的,最好不要这样做,-e因为那里我们只需要一个命令参数。
克里斯·约翰森

我可以给你+2吗?钉它!
Christian Bongiorno

但是,它仅在stdout中显示,但不保存
-biolinh

8

使用awk添加额外的换行符。这也使您可以过滤掉不需要的东西。

awk '{print $0,"\n"}' | less

4

使用sed并单独替换整行以及一个额外的换行符:

grep foo /var/log/maillog | sed -e "s/^.*$/&1\n/"

4
尽管@Chris Johnsen的'G'命令甚至更简单,但sed替换会稍微简单一些,即为's / $ / \ n /'。
卡姆(Camh)2010年

3

这是你所追求的吗?

grep SPAM mail.log | while read -r line; do echo; echo $line; done


您可能要使用read -r以避免将反斜杠字符视为特殊字符。
克里斯·约翰森

0

如果不仅仅用于外观,我更喜欢将它们发送到文本文件并使用文本编辑器打开,因此您可以将行设置为换行或不换行,并轻松进行搜索...并删除不需要的行,以此类推必须输入很多命令。

cat file.log > log.txtgedit log.txt或终端编辑器,例如nano

编辑:或cp file.log log.txt当然当然更容易,更快...感谢KeithB评论


1
为什么catcp呢?
KeithB 2010年

肯定cp会更容易,更快!!大声笑-我正在阅读其他涉及的答案grepawk所以我cat
laurent 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.