他全部, 我有一个文件有一些列。我想对第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