今天在看技术论坛的时候发现一个技术贴看的有点晕,所以自己研究了会,分享一下心得。

首先是原文件

[root@localhost 1]# cat aa
a liu
shanghai jiaotong
shanghai,zhongguo
b liu
beijing daxue
beijing,zhongguo
c hou
dalian chengshi
dalian,zhongguo
[root@localhost 1]#

173034428.jpg

空白行代码打不出来,所以来个截图

目的:3行合并成一行,并去掉空行

结果

a liu@shanghai jiaotong@shanghai,zhongguo
b liu@beijing daxue@beijing,zhongguo
c hou@dalian chengshi@dalian,zhongguo

sed:

sed '/^$/d' aa | sed 'N;N;s/\n/\@/g'

awk:

cat aa | awk -v RS="" '{gsub("\n","@");print}'

解释一下:

sed处理

/^$/d是删除空行

N;N;s/\n/\@/g

这个是每3行合并成一行的意思,然后把换行替换成@符号

awk处理

RS=“”以空白行为分隔符

gsub("\n","@")

换行替换成@符号