用一个空行替换文件中的两个空行

时间:2017-10-08 21:21:41

标签: bash awk sed command-line grep

这是example1的输入:

a


b

输出:

a

b

这是example2的输入:

a




b

输出:

a


b

但是,有一个巨大的文件。我尝试过:sed 's/\n\n/\n/g' file amd cat file | tr '\n' '\t' | sed 's/\t\t/\t/g' | tr '\t' '\n'

3 个答案:

答案 0 :(得分:2)

也可以使用sed

sed '/^$/N;/^\n$/ s/\n//' <your_filename>

将读取下一个(空的)行进入模式空间,如果它也是空的,则删除\ n

答案 1 :(得分:1)

如果您特别希望将两个\n\n替换为一个\n,只需将RS设置为gawk即可:

gawk 'BEGIN{RS="\n\n"} 1' file

如果您希望将\n替换为任何数字,只需将\n设置为awk段落模式:

awk 'BEGIN{RS="" } 1'

答案 2 :(得分:0)

sed一次读取1 \n - 终止的行,因此您无法执行s/\n\n/anything,因为缓冲区中永远不会有任何\n

只需使用awk:

awk -v RS= '1' file

以上将用一个空行替换所有空行序列。如果那不是您需要的,那么请更新您的示例。