回答
單程。輸出文件將命名爲fileX,其中X爲每列編號。
假設INFILE與內容:
0.0:2000.00:2000.04:2001.02
0.1:2002.00:2000.05:2003.02
0.2:2003.00:2002.04:2004.02
0.3:2001.00:2000.05:2000.03
0.3:2001.00:2000.04:2001.02
0.2:2001.00:2002.04:2000.02
執行此命令awk
:
awk '
BEGIN {
FS = ":";
}
{
for (i = 1; i <= NF; i++) {
print $i > "file" i;
}
}
' infile
檢查輸出文件:
head file[1234]
有了結果如下:
==> file1 <==
0.0
0.1
0.2
0.3
0.3
0.2
==> file2 <==
2000.00
2002.00
2003.00
2001.00
2001.00
2001.00
==> file3 <==
2000.04
2000.05
2002.04
2000.05
2000.04
2002.04
==> file4 <==
2001.02
2003.02
2004.02
2000.03
2001.02
2000.02
您應該使用-F:
標誌將字段分隔符設置爲:
。
您應該使用print
與> file
來獲得輸出到您想要的文件。
awk -F: '{ for (i = 1; i <= NF; i++) { file = "file." i; print $i > file; } }' input
(awk
Mac OS X上10.7.4不允許的表達式作爲文件名; gawk
並示出該解決方案將在兩個工作)
[回答爲作業給予對抗一個(現在取消 - 謝謝你)倒票,這是IMNSHO無償錯誤!]
什麼:
cat filename|cut -d ':' -f1 > a.txt
然後你就可以寫爲-f2第二場並把它放在b.txt。
你可以做到這一點(使用'cut'4次);它涉及4個字段的文件傳遞,如果文件存在並且很小,這並不重要,但如果沒有文件(例如,它是在管道中生成的結果),則會變成討厭的文件,或者如果文件很大(對於大的合適的定義,可能以兆字節的倍數來衡量)。您還贏得了[UUOC](http://www.catb.org/jargon/html/U/UUOC.html)獎。 – 2012-08-12 19:25:20
'貓'沒用。 http://partmaps.org/era/unix/award.html – tripleee 2012-08-12 19:28:30
是的,我明白了!當然,如果它不是一個文件,而是像一串數據一樣,你不能使用它。但這不是問題。對於非常大的文件你是對的,這是浪費時間。 Ps:真是一個有趣的獎項! – 2012-08-12 19:33:44
- 1. AWK文本處理CVS文件
- 2. Linux文本文件操作與SED/AWK
- 3. Linux刪除文件批處理腳本
- 4. awk的多個文件的處理
- 5. 處理大文件時的AWK性能
- 6. 如何使用awk處理文本?
- 7. 連接文件awk/linux
- 8. 處理文本文件
- 9. Windows和Linux文本文件處理故障
- 10. awk shell腳本用雙引號處理csv文件
- 11. Linux的紅hat5.4 + AWK文件操作
- 12. 批處理腳本來處理文件
- 13. 使用Linux處理places.sqlite文件
- 14. 批處理文件從Windows到Linux
- 15. Linux shell到windows批處理文件
- 16. 對文件的文本處理
- 17. 導入和處理的文本文件
- 18. Android的後處理文件和文本
- 19. 使用批處理腳本逐行解析文本文件(批處理文件)
- 20. 文本框事件處理
- 21. 文本處理
- 22. 編輯文本文件用awk/sed的
- 23. AWK腳本文件2
- 24. 將批處理文件轉換爲Linux Shell腳本
- 25. 將Windows批處理文件翻譯成Linux shell腳本
- 26. 使用grep處理文本文件
- 27. 在C中處理大文本文件#
- 28. 批處理文件用彩色文本
- 29. 如何處理大型文本文件?
- 30. C#多文本文件處理
不錯,但是11行腳本的腳本有點過分。 – 2012-08-12 19:31:20