我有一个包含255个逗号分隔列的相当大的文件,我只需要打印每三个列。
我正在尝试这样的事情
awk '{ for (i=0;i<=NF;i+=3) print $i }' file
但这似乎不是解决方案,因为它只打印到一个长列。有人可以帮忙吗?感谢
答案 0 :(得分:4)
这是一种方法。
脚本prog.awk:
BEGIN {FS = ","} # field separator
{for (i = 1; i <= NF; i += 3) printf ("%s%c", $i, i + 3 <= NF ? "," : "\n");}
调用:
awk -f prog.awk <input.csv >output.csv
示例input.csv:
1,2,3,4,5,6,7,8,9,10
11,12,13,14,15,16,17,18,19,20
示例output.csv:
1,4,7,10
11,14,17,20
答案 1 :(得分:3)
它的行为与此类似,因为默认情况下awk会拆分空格中的字段。你必须告诉它用逗号分隔它们,并使用FS
变量或-F
开关完成它。除此之外,第一个领域是第一名。零是整行,因此也要更改for
循环的初始值:
awk -F',' '{ for (i=1;i<=NF;i+=3) print $i }' file