Bash 使用unix实用程序将多个换行替换为2个换行
我试图寻找实现这一点的正确方法,从stdin读取数据并打印到stdout。我知道我可以使用挤压(-s)删除同一类型的多行,但我想在多行中保留两个换行符,而不仅仅是一行。我也考虑过使用uniq,但不确定如何使用。我知道折叠也可以使用,但我找不到我想要的折叠版本的任何信息,折叠(1p) 因此,如果我将文本作为输入:Bash 使用unix实用程序将多个换行替换为2个换行,bash,unix,newline,utility,utilities,Bash,Unix,Newline,Utility,Utilities,我试图寻找实现这一点的正确方法,从stdin读取数据并打印到stdout。我知道我可以使用挤压(-s)删除同一类型的多行,但我想在多行中保留两个换行符,而不仅仅是一行。我也考虑过使用uniq,但不确定如何使用。我知道折叠也可以使用,但我找不到我想要的折叠版本的任何信息,折叠(1p) 因此,如果我将文本作为输入: A B C D B C D E 我希望输出为 A B C D B C D E 下面的awk可能会对您有所帮助 awk -v lines=
A B C D
B C D E
我希望输出为
A B C D
B C D E
下面的
awk
可能会对您有所帮助
awk -v lines=$(wc -l < Input_file) 'FNR!=lines && NF{print $0 ORS ORS;next} NF' Input_file
awk-v行=$(wc-l
或
awk-v行=$(wc-l
您可以这样使用awk:
awk 'BEGIN{RS="";ORS="\n\n"}1' file
RS
是输入记录分隔符,ORS
是输出记录分隔符
从awk手册:
如果RS为空,则记录由一个换行加上一个或多个空行组成的序列分隔
这意味着上面的命令将输入文本拆分为两行或多行空行,并用两行换行符再次连接
awk 'BEGIN{RS="";ORS="\n\n"}1' file