用awk删除重复的空白行

问题描述 投票:3回答:2

对于我上课的问题之一,我有一个文件,该文件用于删除文件中重复的空白行。因此,例如,我有一个看起来像这样的输入文件:

Sample Line 1



Sample line 2

Sample line 3

然后输出将把所有多个空行变成单数行,因此输出文件将如下所示:

Sample Line 1

Sample line 2

Sample line 3

我已经能够使用sed命令完成此操作,但问题是我坚持使用awk来获取此输出。我得到的最接近的是awk '!x[$0]++',但这几乎删除了每个空白行。我觉得我缺少一些基本知识。

感谢您的帮助!

linux awk
2个回答
1
投票

您能不能尝试以下操作。

awk '
/^ +$/{
  count++
}
count>1{
  next
}
!/^ +$/{
  count=""
}
1' Input_file

0
投票
$ awk 'NF{c=0} (++c)<3' file
Sample Line 1

Sample line 2

Sample line 3

或者如果您不介意结尾处有多余的空行:

$ awk -v RS= -v ORS='\n\n' '1' file
Sample Line 1

Sample line 2

Sample line 3
© www.soinside.com 2019 - 2024. All rights reserved.