uniq - 比较行时跳过最后N个字符/字段

时间:2010-02-13 16:04:09

标签: bash shell

'man uniq'记录了-f = N和-s = N选项,这使得uniq在比较行时分别跳过前N个字段/字符,但是如何强制uniq跳过 last N个字段/字符?

3 个答案:

答案 0 :(得分:15)

如果您希望首先进行排序功能,然后为要排序的字段的每个唯一组合只保留一行,则可以单独使用unix实用程序排序。

例如,请考虑以下名为some_data

的文件
a;c;4
a;b;9
a;b;6

我们希望按第一个和第二个字段排序,并保留第三个字段,因此我们进行稳定排序,如下所示:

$ sort -k1,1 -k2,2 -t';' --stable some_data

给出了

a;b;9
a;b;6
a;c;4

现在说我们只想保留第一列和第二列的唯一组合。然后我们会这样做:

$ sort -k1,1 -k2,2 -t';' --stable --unique some_data

给出了

a;b;9
a;c;4

答案 1 :(得分:14)

如果您想使用uniq

,则需要先对数据进行排序
 sort file | rev | uniq -f 10 | rev

答案 2 :(得分:9)

rev $ filename |排序| uniq -f = N |转