有沒有辦法使用sort
來排序非常大的CSV文件?
但是,只需按第一列排序,數據可能包含一列中的換行符(適用標準CSV文件規則)。線路斷裂會破壞sort
實用程序嗎?使用unix utililty排序csv文件排序
回答
我相信你應該嘗試這樣cat old.csv | sort > new.csv
UPD:爲了準備如果需要,我們可以使用AWK腳本數據....
正確地閱讀問題。 _「數據可能包含換行符」_ – ssapkota 2011-06-07 18:43:46
使用AWK腳本準備數據非常簡單,它準確地用於準備(格式化)巨大的日誌文件))我沒有說這個命令會起作用,我很傷心這個... – 2011-06-07 18:48:37
排序功能將在asciicographical順序排序行。要獲得更復雜的效果,可以使用UNIX實用程序awk。
你可以使用混合的實用程序。希望我已經正確地理解了它......如果是這樣,這可能會完成這項工作。如果不是,請指出我在哪裏出錯了:-)這要求每個CSV記錄的字段數量是固定的(這也是一個簡單的例子,不包括各種CSV變體(例如,「你好」,「世界,怎麼樣」,是,你會發現如 「的世界裏,如何」 將被分成兩個字段)):
hello,world,how,are,you
one,two,three,four,five
once,I,caught,a
fish,alive
hey,now,hey,now,now
這awk腳本:
BEGIN {
FS=","
fields=0
}
{
if (line == "") {
fields=NF
line = $0
} else {
fields=fields + (NF - 1)
line=line"|"$0
}
}
fields == 5 {
print line
fields = 0
line = ""
}
執行此:
awk -f join.awk < infile | sort | tr '|' '\n'
給出這個輸出:
hello,world,how,are,you
hey,now,hey,now,now
once,I,caught,a
fish,alive
one,two,three,four,five
從本質上講,所有我們正在與awk腳本做的是合併多行記錄到一個單一的線,我們可以再喂到sort
,然後用tr
再次突破。我使用管道作爲換行符的替代品 - 只要選擇您可以保證的內容就不會出現在CSV記錄中。
現在它可能不是完美的你想要的,但希望它會推動你在正確的方向。 awk腳本的主要內容是它需要知道每個CSV記錄有多少個字段。這需要修復。如果它是可變的,那麼所有的賭注都是關閉的,因爲在那裏需要更多的規則確定要分類的文件的語義性質...
更簡單的方法是暫時修改您的數據標準UNIX排序命令可以正確解釋您的數據。
您可以使用一個名爲csvquote的程序,它可以替換帶有非打印字符的引用字段值中有問題的逗號和換行符。然後它會在管道末端恢復這些字符。
例如,
csvquote inputfile.csv | sort | csvquote -u
您可以在這裏找到代碼:https://github.com/dbro/csvquote
- 1. 使用Unix排序排序多個鍵
- 2. 用python排序csv文件
- 3. 排序和uniq csv文件
- 4. 按列排序csv文件
- 5. PHP排序大型csv文件
- 6. Unix排序U
- 7. 使用CSV排序表格
- 8. 如何排序多個文件? Unix的
- 9. 如何排序您從.csv文件中排序的內容
- 10. Unix排序問題
- 11. UNIX LS排序decending
- 12. 排序字符,而不使用unix中的排序
- 13. 排序CSV文件Python/Linux命令
- 14. 在C中排序CSV文件
- 15. 如何重新排序60mb CSV文件
- 16. 讀取,合併和排序.csv文件
- 17. c#加載csv文件和排序列
- 18. 排序列多.csv文件的Python
- 19. 排序文件?
- 20. 排序文件
- 21. 排序使用文本文件的bash排序
- 22. 排序文件
- 23. 排序文件
- 24. Ruby CSV ::表排序
- 25. 用新行排序csv
- 26. 使用C#排序來自XML文件的數據:不排序
- 27. 如何在BASH中使用排序來排序文件?
- 28. 使用Bubble排序按姓氏排序文件?
- 29. restriced鍵排序在UNIX
- 30. unix排序的問題
其實相當困難。您可能想看看我的FOSS項目http://code.google.com/p/csvfix/,它可以對CSV文件進行排序等等,並且可以在Unix上運行。 – 2011-06-07 18:40:31
@Neil Bufferworth:酷!它是否適用於在列數據中換行的大型csv文件? – user775187 2011-06-07 19:26:31
以及1000萬行上csvfix的性能如何? – user775187 2011-06-07 19:36:24