I have a text file:
$ cat text
542,8,1,418,1
542,9,1,418,1
301,34,1,689070,1
542,9,1,418,1
199,7,1,419,10
我希望能够使用sort
命令基于第一列对文件进行排序并去除重复项,但是事情并没有按照预期进行。
方法1
$ sort -t, -u -b -k1n text
542,8,1,418,1
542,9,1,418,1
199,7,1,419,10
301,34,1,689070,1
它没有按照第一列排序。
方案二
$ sort -t, -u -b -k1n,1n text
199,7,1,419,10
301,34,1,689070,1
542,8,1,418,1
它移除了542,9,1,418,1
这一行,但我想保留一份副本。
第一种方法似乎去重了,但排序不正确,而第二种方法排序正确,但移除了比我想要的更多。我该如何得到正确的结果?
uniq
要求输入文件已排序。是否可能sort
基于第一列排序的输出不基于所有列排序? - Yangawk '!_[$0]++' text | sort -t, -nk1,1
先过滤重复行,然后将其管道传递到排序。 - jaypal singhsort -t, -nk1,1 -nk2,2 -nk3,3 -nk4,4 -nk5,5 -u text
来对所有列进行排序,然后从中列出unique
行。 - jaypal singh