我有一個相當大的文件,裏面有255個昏迷分隔的列,我只需要打印出每隔三欄。打印文件的第n列
我是想這樣的事情
awk '{ for (i=0;i<=NF;i+=3) print $i }' file
但似乎並沒有被解決,因爲它打印到只有一個長列。任何人都可以幫忙?謝謝
我有一個相當大的文件,裏面有255個昏迷分隔的列,我只需要打印出每隔三欄。打印文件的第n列
我是想這樣的事情
awk '{ for (i=0;i<=NF;i+=3) print $i }' file
但似乎並沒有被解決,因爲它打印到只有一個長列。任何人都可以幫忙?謝謝
它的行爲如此,因爲默認awk拆分空間中的字段。你必須告訴它用逗號分隔它們,它使用FS
變量或-F
開關完成。除此之外,第一場是第一場。零爲整條生產線,因此也改變了for
循環的初始值:
awk -F',' '{ for (i=1;i<=NF;i+=3) print $i }' file
下面是做到這一點的方法之一。
腳本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在39秒內擊敗我! 'awk -F'{for(i = 1; i <= NF; i + = 2)printf「%s%s」,$ i,(i + 3> NF?「\ n」:FS)}''' – Kent