他全部, 我有一個文件有一些列。我想對第2列進行排序,然後對第1列應用uniq。我發現這個post在同一列討論sort和uniq,但是我的問題有點不同。我正在考慮使用sort
和uniq
,但不知道如何。謝謝。如何基於列而排序,但基於另一列的uniq?
回答
您可以使用管道,但它不適用。
例子:
$ cat initial.txt
1,3,4
2,3,1
1,2,3
2,3,4
1,4,1
3,1,3
4,2,4
$ cat initial.txt | sort -u -t, -k1,1 | sort -t, -k2,2
3,1,3
4,2,4
1,3,4
2,3,1
結果由鍵2,鍵1注獨特之處在於結果顯示在控制檯上,如果你想在一個文件,只需使用重定向排序(> newFiletxt
)
對於這種更復雜的操作的另一個解決辦法是靠另一個工具(根據您的喜好(和年齡)時,awk,Perl或Python)
編輯: 如果我理解正確了新的要求,它是由科拉姆2排序,列1是給定列2獨特:
$ cat initial.txt | sort -u -t, -k1,2 | sort -t, -k2,2
3,1,3
1,2,3
4,2,4
1,3,4
2,3,1
1,4,1
難道你期待什麼?否則,我不明白:-)
uniq
需要數據按排序順序工作,所以如果您在第二個字段上使用sort
,然後在第一個字段上應用uniq
,您將無法獲得正確的結果。
你可能想嘗試
sort -u -t, -k1,1 filename | sort -t, -k2,2
謝謝Lobo ..但我需要先進行排序然後找到第一列中可能存在重複值的第一列中的唯一值,但它們不會緊挨着每一列其他。我很驚訝Linux中的uniq命令沒有指定特定列的參數。謝謝。 – Ken 2011-06-10 05:30:10
'uniq'命令可以給你選擇字段的選項。看看'-f','s'和其他選項。你在尋找'sort -t''-k2,2 b | uniq -f1'?你能提供一個你正在尋找的輸入和輸出的例子嗎? – Lobo 2011-06-10 05:40:36
,但'-f'和'-s'將跳過第一個數字的列/字符以進行唯一性比較。他們不允許特定的列。布魯斯的第二個答案現在適用於我目前的任務。謝謝。 – Ken 2011-06-10 05:48:56
只是可以肯定的是我得到了你的意思是正確的。您想基於文件中的第二列對文件進行排序。然後你想刪除第一列中的重複項(另一種說法是將uniq應用於第一列!)。冷靜,要做到這一點,你需要執行三項任務:
- 排序上的uniq將被應用的列(因爲只有在排序輸入的uniq可以 工作)。
- 在排序的列上應用uniq。
- 根據第二列中的值對輸出進行排序。
使用管道:該命令
sort -t ',' -k1 fileName| awk '!x[$1]++' | sort -t ',' -k2
請注意,你不能在指定的uniq第一場,你可以使用-f
開關跳第一n
領域。因此,我用awk
來代替uniq
。
你能解釋一下awk命令嗎? – 2018-03-06 16:45:45
我用這個 sort -t ',' -nk2
這裏排序
1,2
2,5
3,1
to
3,1
1,2
2,5
- 1. 排列基於另一
- 2. 基於另一個排序列表?
- 3. 排序基於另一陣列
- 4. 排序基於另一個陣列
- 5. 排序基於另一陣列
- 6. 排序基於列
- 7. 基於排序列和另一列值重新排序表
- 8. 基於另一列
- 9. 基於另一列
- 10. 基於另一個列表的順序排列列表
- 11. 排序二維陣列基於一列
- 12. 排序基於另一個排序列表上Python的list
- 13. 排序基於3列
- 14. 列排序基於價值
- 15. 基於另一數值列進行排序的數字列
- 16. 基於另一個列表的內容排序列表
- 17. 基於另一個列表排序不同的列表?
- 18. 基於另一個列表的列表排序
- 19. 基於另一個列表的C#排序列表
- 20. 基於另一個陣列排序陣列
- 21. 基於另一列排序生成新列 - SQL
- 22. 基於另一個列表排序列表
- 23. 基於另一個列表
- 24. SQL - 基於從另一列
- 25. 總計基於另一列
- 26. 計算基於另一列
- 27. 更新基於另一列
- 28. 基於另一列值CASE
- 29. 創建基於另一列
- 30. 操縱基於另一列
感謝布魯斯的回答。嗯......但我的情況下需要先排序然後uniq。這意味着第一列可能有重複的值,但不能彼此相鄰。還有什麼想法?我是awk的初學者,但是如果你有一個好的解決方案。我想用它。謝謝。 – Ken 2011-06-10 05:26:08
您能否提供數據樣本和預期結果,例如:在http://pastebin.com上?我不確定我是否完全明白 – Bruce 2011-06-10 05:31:33
酷......這一個適合我......雖然它沒有足夠強大的非連續列。它會爲我目前的任務做。感謝堆。 – Ken 2011-06-10 05:40:55