我有一些数据,我想保留多个空白行并仅删除单个空白行。我的数据如下所示:
1
2
3
4
5
6
7
8
9
10
我希望输出为:
1
2
3
4
5
6
7
8
9
10
我尝试使用以下命令,但似乎无法正常工作:
awk ' /^$/ { print; } /./ { printf("%s ", $0); }'
和
sed 'N;/^\n$/d;P;D'
另外,我尝试使用,cat -s
但不一定删除空白行。此外,我玩过sed '/^$/'
但不能仅指定单行。任何帮助是极大的赞赏。
使用gnu-awk非常简单:
awk -v RS='\n+' '{printf "%s", $0 (length(RT) != 2 ? RT : "\n")}' file
1
2
3
4
5
6
7
8
9
10
-v RS='\n+'
我们构成1个或多个换行符作为记录分隔符length(RT)
我们检查每个记录后有多少个换行符RT
(原始捕获值)如果length != 2
替代awk
命令:
awk -v RS='\n{3,}' '{gsub(/\n{2}/, "\n", $0); printf "%s", $0 RT}' file
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句