回答
單程。輸出文件將命名爲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一個文本文件,sed和grep的
- 5. awk的多個文件的處理
- 6. 處理大文件時的AWK性能
- 7. 如何使用awk處理文本?
- 8. 簡化文本處理管線與AWK
- 9. AWK/SED處理文本文件,使用Feed文件創建一個CSV文件
- 10. Awk腳本合併Linux中的文本文件中的2列
- 11. 使用awk整理文本文件
- 12. 連接文件awk/linux
- 13. 使用awk處理多個文件
- 14. awk中處理三個文件
- 15. 使用awk處理rar文件
- 16. 從文本文件中計算AWK/Linux腳本
- 17. 處理文本文件
- 18. 深文本文件處理
- 19. Windows和Linux文本文件處理故障
- 20. awk shell腳本用雙引號處理csv文件
- 21. 在awk文件比較中處理空文件
- 22. AWK腳本處理一個文件並讀取另一個文件
- 23. Linux的紅hat5.4 + AWK文件操作
- 24. Perl腳本來處理文本文件
- 25. 批處理腳本來處理文件
- 26. 使用Linux處理places.sqlite文件
- 27. Linux shell到windows批處理文件
- 28. 批處理文件從Windows到Linux
- 29. Matlab中的文本文件處理
- 30. Visual Basic中的文本文件處理
不錯,但是11行腳本的腳本有點過分。 – 2012-08-12 19:31:20