【问题标题】:Extract text with awk or sed使用 awk 或 sed 提取文本
【发布时间】:2020-09-26 21:44:21
【问题描述】:

我想从下面提取和删除一些文本

[root@test]# du -k ./[a-zA-Z0-9] --max-depth=1 | sort -hr

之前

    7789696 ./b/bklee
    946792  ./a
    796588  ./b/bluecyn
    477860  ./b/bborikun
    473652  ./b/bluechiper
    220780  ./a/ara316
    144244  ./a/aceload
    131088  ./b/belivart
    79108   ./a/athlon85
    78644   ./b/beschur512
    66264   ./b/bogdanov
    52460   ./A

之后

    796588  bluecyn
    477860  bborikun
    473652  bluechiper
    220780  ara316
    144244  aceload
    131088  belivart
    79108   athlon85
    78644   beschur512
    66264   bogdanov

我想要的是删除重复的模式,“./a/”和只打印出来的行,如“/a” 我想弄清楚,但由于我是 AWK 和 SED 的初学者,我需要一些帮助。

谢谢!

【问题讨论】:

    标签: regex linux text awk sed


    【解决方案1】:
    du -k ./[a-zA-Z0-9] --max-depth=1 | sort -hr | sed -e 's,\./[a-z]/,,; /\.\/[Aa-Zz]/d'
    
    7789696 bklee
    796588  bluecyn
    477860  bborikun
    473652  bluechiper
    220780  ara316
    144244  aceload
    131088  belivart
    79108   athlon85
    78644   beschur512
    66264   bogdanov
    

    【讨论】:

      【解决方案2】:

      像这样,使用 GNU

      sed -E '/\s\.\/\w$/d; s!\./\w/?!!' file
      7789696 bklee
      796588 bluecyn
      477860 bborikun
      473652 bluechiper
      220780 ara316
      144244 aceload
      131088 belivart
      79108 athlon85
      78644 beschur512
      66264 bogdanov
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-08
        • 1970-01-01
        • 1970-01-01
        • 2014-12-10
        • 1970-01-01
        • 2021-07-19
        • 1970-01-01
        • 2012-07-11
        相关资源
        最近更新 更多