z.r*_*ubi 3 unix bash utilities newline utility
我试图寻找正确的方法来实现这一点,从标准输入读取并打印到标准输出。我知道我可以使用挤压(-s)来删除相同类型的多行,但我想在许多行(而不仅仅是一行)中留下两个换行符。我也研究过使用 uniq,但不确定如何使用。我知道也可以使用折叠,但我找不到任何有关我想要的折叠版本折叠(1p)的信息。
所以,如果我有文本作为输入:
A B C D
B C D E
Run Code Online (Sandbox Code Playgroud)
我希望输出是
A B C D
B C D E
Run Code Online (Sandbox Code Playgroud)
您可以像这样使用 awk:
awk 'BEGIN{RS="";ORS="\n\n"}1' file
Run Code Online (Sandbox Code Playgroud)
RS是输入记录分隔符,ORS是输出记录分隔符。
来自 awk 手册:
如果 RS 为空,则记录由换行符加一个或多个空行组成的序列分隔
这意味着上面的命令将输入文本分割为两个或多个空行,并再次用两个换行符将它们连接起来。