Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Awk 打印文件的每N列_Awk - Fatal编程技术网

Awk 打印文件的每N列

Awk 打印文件的每N列,awk,Awk,我有一个相当大的文件,有255个分开的列,我只需要每三列打印一次 我在尝试这样的事情 awk '{ for (i=0;i<=NF;i+=3) print $i }' file awk'{for(i=0;i它的行为类似于此,因为默认情况下会在空格中拆分字段。您必须告诉它使用逗号拆分字段,这是使用FS变量或-F开关完成的。除此之外,第一个字段是第一个字段。零是整行,因此也可以更改for循环的初始值: awk -F',' '{ for (i=1;i<=NF;i+=3) print $i

我有一个相当大的文件,有255个分开的列,我只需要每三列打印一次

我在尝试这样的事情

awk '{ for (i=0;i<=NF;i+=3) print $i }' file

awk'{for(i=0;i它的行为类似于此,因为默认情况下会在空格中拆分字段。您必须告诉它使用逗号拆分字段,这是使用
FS
变量或
-F
开关完成的。除此之外,第一个字段是第一个字段。零是整行,因此也可以更改
for
循环的初始值:

awk -F',' '{ for (i=1;i<=NF;i+=3) print $i }' file

awk-F',''{for(i=1;i这里有一种方法可以做到这一点

脚本prog.awk:

BEGIN {FS = ","} # field separator
{for (i = 1; i <= NF; i += 3) printf ("%s%c", $i, i + 3 <= NF ? "," : "\n");}
示例output.csv:

1,4,7,10
11,14,17,20

+我在39秒内击败了我!!
awk-F,{for(i=1;iNF?\n:FS)}'
有人能解释一下(i+3>NF?\n:FS)部分吗@Kent@Kent如果打印最后一项(
i+3
大于字段数),则打印换行符。否则,打印逗号(字段分隔符).
NF
是字段数,
FS
是字段分隔符。
1,2,3,4,5,6,7,8,9,10
11,12,13,14,15,16,17,18,19,20
1,4,7,10
11,14,17,20