Dom*_*red 4 linux bash awk sed
我有一些数据,我想保留多个空白行,只删除单个空白行.我的数据如下所示:
1
2
3
4
5
6
7
8
9
10
Run Code Online (Sandbox Code Playgroud)
我希望输出为:
1
2
3
4
5
6
7
8
9
10
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下命令,但我似乎无法让它工作:
awk ' /^$/ { print; } /./ { printf("%s ", $0); }'
Run Code Online (Sandbox Code Playgroud)
和
sed 'N;/^\n$/d;P;D'
Run Code Online (Sandbox Code Playgroud)
此外,我尝试使用,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
Run Code Online (Sandbox Code Playgroud)
-v RS='\n+'我们构成一个或多个换行符作为记录分隔符length(RT)我们检查每条记录后有多少换行符RT(原始捕获值)iflength != 2替代awk命令:
awk -v RS='\n{3,}' '{gsub(/\n{2}/, "\n", $0); printf "%s", $0 RT}' file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
353 次 |
| 最近记录: |