使用AWK每隔三次使用逗号替换换行符?

时间:2016-04-20 17:28:09

标签: shell unix awk

例如:给定文件包含以下行:

awk

我正在尝试使用1,alpha,beta 2,charlie,delta 10,text,test 获得以下输出:

eval

4 个答案:

答案 0 :(得分:1)

相当简单。使用输出记录分隔符,如下所示。当行号不能被3整除时指定逗号分隔符,否则指定换行符:

awk 'ORS=NR%3?",":"\n"' file

答案 1 :(得分:0)

awk可以通过操纵ORS

轻松处理这个问题
awk '{ORS=","} !(NR%3){ORS="\n"} 1' file

1,alpha,beta
2,charlie,delta
10,text,test

答案 2 :(得分:0)

有一种用于此类文本处理的工具pr

$ pr -3ats, file

1,alpha,beta
2,charlie,delta
10,text,test

答案 3 :(得分:0)

您也可以将xargs与sed结合使用,将多行合并为一行,这对于了解以下内容非常有用:

cat file|xargs -n3|sed 's/ /,/g'