Linux排序和制作独特的文本不是整行而是字符串位置

时间:2013-07-02 13:27:07

标签: sed awk

有没有办法在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哈希(在本例中)必须是唯一的而不是其他数据。

谢谢!

1 个答案:

答案 0 :(得分:3)

sort -u -t\| -k3,3 input-file.txt

参数说明:

  • -u:独特记录
  • -t\|:将字段分隔符设置为|(反斜杠用于转义|,因此shell不会将其作为管道处理)
  • -k3,3:使用第3列(仅第3列)作为排序键