我有一个包含255个逗号分隔列的大文件,我需要仅打印每三列。
我尝试过以下代码:
awk '{ for (i=0;i<=NF;i+=3) print $i }' file
但这似乎并不是解决方案,因为它只打印到一个长列中。有人可以帮忙吗?谢谢。
我有一个包含255个逗号分隔列的大文件,我需要仅打印每三列。
我尝试过以下代码:
awk '{ for (i=0;i<=NF;i+=3) print $i }' file
但这似乎并不是解决方案,因为它只打印到一个长列中。有人可以帮忙吗?谢谢。
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
输出示例.csv:
1,4,7,10
11,14,17,20
FS
变量或-F
开关完成。除此之外,第一个字段是编号一。零是整行,因此还要更改for
循环的初始值:awk -F',' '{ for (i=1;i<=NF;i+=3) print $i }' file
awk -F, '{for(i=1;i<=NF;i+=2)printf "%s%s", $i, (i+3>NF?"\n":FS)}'
- Kenti + 3
大于字段数),则打印一个换行符。否则,打印一个逗号(字段分隔符)。NF
是字段数,FS
是字段分隔符。 - Gassa