linux 合并多个连续的行

2013-6-8 杜世伟 awk

linux 合并多个连续的行
文件内容为:
$ cat infile.txt 
aid=33
pw=3
nn=90
aid=32
pw=30
nn=70
aid=56
pw=3
nn=93

组合或合并上述文件的每三个连续行,使输出变为:
aid=33,pw=3,nn=90
aid=32,pw=30,nn=70
aid=56,pw=3,nn=93

方法一:通过awk,如果行数可以被3整除,然后放一个新行(\n)否则将逗号(,)
$ awk '{printf("%s%s", $0, (NR%3 ? "," : "\n"))}' infile.txt 
aid=33,pw=3,nn=90
aid=32,pw=30,nn=70
aid=56,pw=3,nn=93

方法二:通过awk,另一种实现方式
$ awk 'NR%3{printf $0",";next;}1' infile.txt 
aid=33,pw=3,nn=90
aid=32,pw=30,nn=70
aid=56,pw=3,nn=93

方法三:通过使用linux paste 命令: 
$ paste -d"," - - - < infile.txt 
aid=33,pw=3,nn=90
aid=32,pw=30,nn=70
aid=56,pw=3,nn=93

方法四:通过使用bash命令:
$ while read line1; do read line2; read line3; echo "$line1,$line2,$line3"; done < infile.txt 
aid=33,pw=3,nn=90
aid=32,pw=30,nn=70
aid=56,pw=3,nn=93


标签: linux awk bash read

Powered by emlog 沪ICP备2023034538号-1