暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

linux处理文本之如何删除重复行

干货食堂 2023-01-02
514

如果我们通过sed或者awk或者grep等命令已经获取到了我们需要的数据,但是许多数据是重复的,我们需要将重复的数据给处理一把,只剩下非重复的数据,应该怎么办呢?下面就介绍一下如何处理重复的数据,有好几种方法都可以实现。

1、sort + uniq实现

    root@PC1:/home/test# ls
    a.txt
    root@PC1:/home/test# cat a.txt
    1 2
    a b
    1 2
    1 2
    o p
    a b
    m m
    root@PC1:/home/test# sort a.txt | uniq ## 删除重复行
    1 2
    a b
    m m
    o p
    root@PC1:/home/test# sort a.txt | uniq -u ## 取唯一行
    m m
    o p
    root@PC1:/home/test# sort a.txt | uniq -d ## 取重复行
    1 2
    a b

    我个人认为最简单的方式实现

      sort -u a.txt > 2.txt

      2、awk实现

      第一种

        root@PC1:/home/test# ls
        a.txt
        root@PC1:/home/test# cat a.txt
        1 2
        a b
        1 2
        1 2
        o p
        a b
        m m
        root@PC1:/home/test# sort a.txt | awk '{if(line != $0) print $0; line = $0}' ## 删除重复行
        1 2
        a b
        m m
        o p

        第二种

          root@PC1:/home/test# ls
          a.txt
          root@PC1:/home/test# cat a.txt
          1 2
          a b
          1 2
          1 2
          o p
          a b
          m m
          root@PC1:/home/test# awk '!($0 in array) {array[$0]; print}' a.txt ## 删除重复行
          1 2
          a b
          o p
          m m

          第三种

            root@PC1:/home/test2# ls
            a.txt
            root@PC1:/home/test2# cat a.txt
            a b
            c d
            a b
            e f
            c d
            c d
            m n
            root@PC1:/home/test2# awk '!a[$0]++' a.txt ## 提取不重复的行
            a b
            c d
            e f
            m n

            3、 sed实现

              root@PC1:/home/test# ls
              a.txt
              root@PC1:/home/test# cat a.txt
              1 2
              a b
              1 2
              1 2
              o p
              a b
              m m
              root@PC1:/home/test# sort -n a.txt | sed '$!N; ^\(.*\)\n\1$/!P; D' ###????
              a b
              m m
              o p
              1 2

              linux常用命令之sort命令

              linux操作文本三剑客之sed命令

              linux操作文本三剑客之awk命令

              用IDEA创建一个vert.x 的web项目

              盘点下我最近看过的电视剧《四》

              docker的mysql容器如何初始化脚本


              文章转载自干货食堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论