【问题标题】:How to remove duplicate lines without sorting and only matching nth colum如何在不排序且仅匹配第 n 列的情况下删除重复行
【发布时间】:2019-02-16 21:22:14
【问题描述】:

您好,我正在尝试从文件中删除“重复”行,但我想保持文件顺序,我不想匹配整行,只匹配第二列。

例子

23 google.com 345 432 3
543 google.com d9 0ds aa
8 amazon.com 820 2 2
45 google.com 80a s0d e
32 yahoo.com wqq 33 234

会变成

23 google.com 345 432 3
8 amazon.com 820 2 2
32 yahoo.com wqq 33 234

我知道如何sort -u -o file 但这与整个行匹配,并且它会重新排序文件。我看到了这个awk '!seen[$0]++' file,它可以避免排序,但它仍然匹配整行。

有人知道这是否可以做到吗?

谢谢, 克里斯

【问题讨论】:

    标签: awk duplicates


    【解决方案1】:

    可以修改awk解决方案,只匹配第二列:

    awk '!seen[$2]++' file 
    

    【讨论】:

    • 好的,所以 0 表示整行,2 表示第二列。谢谢!
    • 没错。默认字段分隔符 (FS) 通常是空格(空格、多个空格、制表符等)。使用-F,您甚至可以使用不同的分隔符拆分列,例如,echo "hello+world" | awk -F"+" '{print $2}' 将打印world。
    【解决方案2】:

    尝试只匹配第二列:

    awk '!seen[$2]++' 
    

    【讨论】:

      猜你喜欢
      • 2020-08-28
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 2012-08-08
      • 2022-01-14
      相关资源
      最近更新 更多