2013-07-31 109 views
1

我想從一個更大的文件中按列分割創建大量文件。例如,我的大文件的標題是這樣的:用awk打印三列,然後打印三列

Name Chr Position SNP1A SNP1B SNP1C SNP2A SNP2B SNP2C SNP3A SNP3B SNP3C

,我想創建這些文件:

Name Chr Position SNP1A SNP1B SNP1C

Name Chr Position SNP2A SNP2B SNP2C

Name Chr Position SNP3A SNP3B SNP3C

我一直試圖使用awk,但我有點新手無線日,所以我的命令當前讀取:

for ((i=1; i<=440;i++)); do awk -f printindivs.awk inputfile done 

其中printindivs.awk是: {print $1 $2 $3 $((3*$i)+1) $((3*$i)+2) $((3*$i)+3))}

我得到的輸出表明,我試圖讓三個組的方法是錯誤的:如何我可以這樣做嗎?

感謝

+0

移動'for'循環進入'awk'代碼。 – Kevin

回答

1

爲此,您可以輕鬆地將只是一個簡單的腳本awk

$ awk '{for(i=4;i<=NF;i+=3)print $1,$2,$3,$i,$(i+1),$(i+2) > ("out"++j)}' file 

輸出文件將在out[1..n]

$ cat out1 
Name Chr Position SNP1A SNP1B SNP1C 

$ cat out2 
Name Chr Position SNP2A SNP2B SNP2C 

$ cat out3 
Name Chr Position SNP3A SNP3B SNP3C 
+0

這將打印文件每一行的單個文件。我想打印列 – Joni

+0

看看你問的問題,你不提一次列!您顯示預期的輸出,這就是我的解決方案。你想打印這些列,你甚至想要做什麼! –

+0

標題是「用awk打印三列,然後是三列」,我在文本中明確地使用了單詞列,並且我引用了一個標題。正如它發生的那樣,我當時正在st and,只需要使用切割。 – Joni