【问题标题】:Match single character between Start string and End string匹配起始字符串和结束字符串之间的单个字符
【发布时间】:2010-11-04 20:56:29
【问题描述】:

我似乎根本无法理解正则表达式。如何匹配位于 START 和 END 字符串之间的字符。例如

#START-编辑

#ValueA=0

#ValueB=1

#END-编辑

我想匹配 #START-EDIT 和 #END-EDIT 之间的任何 #。

具体来说,我想使用 sed 在可能有也可能没有多个 START-EDIT 和 END-EDIT 部分的各种文件上用空替换匹配 # 值(删除它们)。

【问题讨论】:

    标签: regex sed


    【解决方案1】:
    ^#START-EDIT.*(#) *. *#END-EDIT$
    

    【讨论】:

    • 组 (#) 匹配任何出现的 # 并且它旁边的 '*' 匹配 0 次或多次出现的相同 :) 你可以在开头使用 '^' 和 ' $' 最后根据您的要求。干杯
    • 这应该是非贪婪的。
    【解决方案2】:

    sed 是基于行的。您可以轻松地在一行中根据正则表达式进行搜索、替换。但是没有真正简单的方法来搜索/替换多行。 AWK 可能会解决问题。

    如果您在一行上有正则表达式,则以下命令可能就是您要查找的内容

    sed -e "/^#START-EDIT.*#END-EDIT$//" myInput.txt
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-23
      • 1970-01-01
      • 2013-12-28
      • 2014-12-29
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多