我有一个包含内容的文件:
aaa bbb ccc
jjj kkkk llll qqqq
www ee rrrr
kkkk oooo ppp wwww
kk aaa dd
aa eee tttt
我想得到以下输出:
aaa bbb ccc jjj kkk llll qqqq www ee rrrr
kkkk oooo ppp wwww kk aaa dd
aa eee tttt
请注意,空行将行 block 分开,并且每个 block 中的新行被空格替换。
我的解决方案非常丑陋,我首先用分隔符替换空行,例如“|”,然后用空格替换所有换行符,最后替换分隔符“|”通过换行符。对于这个问题,有人有更优雅的解决方案吗?
最佳答案
这可以用 awk
轻松完成:
awk -v RS= '{gsub(/\n/, " "); print}' file
aaa bbb ccc jjj kkkk llll qqqq www ee rrrr
kkkk oooo ppp wwww kk aaa dd
aa eee tttt
此处 -v RS=
将记录分隔符设置为空字符串,这使得 awk 读取多行(直到出现空行)作为一条记录。
更新:更简单的 awk 可以是:(感谢@jaypal)
awk -v RS= '{$1=$1}1' file
关于linux - 加入由空行分隔的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26071670/