Shell 是否使用AWK在每三次出现时用逗号替换换行符?
例如:给定文件具有以下行:Shell 是否使用AWK在每三次出现时用逗号替换换行符?,shell,unix,awk,Shell,Unix,Awk,例如:给定文件具有以下行: 1 alpha beta 2 charlie delta 10 text test 我试图使用awk获得以下输出: 1,alpha,beta 2,charlie,delta 10,text,test awk可以通过操纵ORS轻松处理此问题: awk '{ORS=","} !(NR%3){ORS="\n"} 1' file 1,alpha,beta 2,charlie,delta 10,text,test 相当简单。使用输出记录分隔符,如下所示。如果
1
alpha
beta
2
charlie
delta
10
text
test
我试图使用awk
获得以下输出:
1,alpha,beta
2,charlie,delta
10,text,test
awk可以通过操纵
ORS
轻松处理此问题:
awk '{ORS=","} !(NR%3){ORS="\n"} 1' file
1,alpha,beta
2,charlie,delta
10,text,test
相当简单。使用输出记录分隔符,如下所示。如果行号不能被3整除,则指定逗号分隔符,否则指定换行符:
awk 'ORS=NR%3?",":"\n"' file
有一个用于这种文本处理的工具
pr
$ pr -3ats, file
1,alpha,beta
2,charlie,delta
10,text,test
您还可以将
xargs
与sed结合使用,将多行合并为一行,了解以下信息非常有用:
cat文件| xargs-n3 | sed's/,/g'