V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
mrco
V2EX  ›  问与答

请教大家一个 sed 匹配字符串的写法

  •  
  •   mrco · 2018-06-27 23:23:27 +08:00 · 2799 次点击
    这是一个创建于 2100 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Hi,

    比如有下面的文本:

    ======KVM 虚拟化手册======
    =====简介=====
    =====安装和配置 kvm 虚拟化=====
    ====检查是否支持 KVM====
    ====安装 kvm 虚拟化平台====
    ====配置 nested virtualization====
    ==== 配置网络====
    ====重启系统并检查相关配置====
    =====virsh 创建 & 安装虚拟机=====
    ====通过 VNC 进行安装====
    =====REFERENCE=====
    

    匹配以=开头,并以=结尾的行,然后在左边的=后面加入字符串-,得到:

    ==== - 配置网络 ====
    

    请问大家应该如何实现?

    我只知道如何匹配出来,不知道怎么添加字符串...

    sed -n '/^\.*=\.*=$/p' kvm.txt
    
    7 条回复    2018-06-28 09:15:13 +08:00
    chunk
        1
    chunk  
       2018-06-28 00:13:49 +08:00 via Android   ❤️ 1
    sed -E 's/^(=*)([^=].+)(=+)$/\1-\2\3/g' kvm.txt
    mrco
        2
    mrco  
    OP
       2018-06-28 00:21:32 +08:00
    @chunk 很屌啊....可否麻烦解释下呢...
    rrfeng
        3
    rrfeng  
       2018-06-28 00:37:31 +08:00
    让它贪婪过去就好了
    s/^=(=*)(.*)=$/=\1-\2=/
    ETiV
        4
    ETiV  
       2018-06-28 00:55:07 +08:00 via iPhone
    这正则看着很像 brain fuck 语言啊,2333
    CEBBCAT
        5
    CEBBCAT  
       2018-06-28 08:43:03 +08:00 via Android
    行内多次替换 -g
    三个括号对应 \1 \2 \3,截取用的 ()
    =+、=*、[^=].+、^、$ 你应该懂

    @mrco
    @chunk

    应该没理解错
    CEBBCAT
        6
    CEBBCAT  
       2018-06-28 08:44:06 +08:00 via Android
    @CEBBCAT 断句好像有不小问题,楼主自己多试试就能理解了
    mrco
        7
    mrco  
    OP
       2018-06-28 09:15:13 +08:00
    @CEBBCAT 嗯嗯嗯,就是喜欢这种豁然开朗的感觉....谢谢大家~~~~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3494 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 11:01 · PVG 19:01 · LAX 04:01 · JFK 07:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.