有没有办法在Linux(GNU)中对文本文件进行排序,如CSV或任何非行(sort | uniq),但按字符串位置排序。例如:
John Doe|Something|c4ca4238a0b923820dcc509a6f75849b|Blah Blah
John Smith|Nothing|c81e728d9d4c2f636f067f89cc14862c|Blah Blah
Johanna Doe|Another thing|c4ca4238a0b923820dcc509a6f75849b|Blah Blah
J Doe|Does not matter|eccbc87e4b5ce2fe28308fd9f2a7baf3|Blah Blah
有没有办法使用常见的GNU工具,比如sed,awk,cut ......来获得这个输出:
John Doe|Something|c4ca4238a0b923820dcc509a6f75849b|Blah Blah
John Smith|Nothing|c81e728d9d4c2f636f067f89cc14862c|Blah Blah
J Doe|Does not matter|eccbc87e4b5ce2fe28308fd9f2a7baf3|Blah Blah
md5哈希(在本例中)必须是唯一的而不是其他数据。
谢谢!
答案 0 :(得分:3)
sort -u -t\| -k3,3 input-file.txt
参数说明:
-u
:独特记录-t\|
:将字段分隔符设置为|
(反斜杠用于转义|
,因此shell不会将其作为管道处理)-k3,3
:使用第3列(仅第3列)作为排序键