Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 是否使用AWK在每三次出现时用逗号替换换行符?_Shell_Unix_Awk - Fatal编程技术网

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'