Awk 打印文件的每N列
我有一个相当大的文件,有255个分开的列,我只需要每三列打印一次 我在尝试这样的事情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
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