【发布时间】:2010-11-04 20:56:29
【问题描述】:
我似乎根本无法理解正则表达式。如何匹配位于 START 和 END 字符串之间的字符。例如
#START-编辑
#ValueA=0
#ValueB=1
#END-编辑
我想匹配 #START-EDIT 和 #END-EDIT 之间的任何 #。
具体来说,我想使用 sed 在可能有也可能没有多个 START-EDIT 和 END-EDIT 部分的各种文件上用空替换匹配 # 值(删除它们)。
【问题讨论】:
我似乎根本无法理解正则表达式。如何匹配位于 START 和 END 字符串之间的字符。例如
#START-编辑
#ValueA=0
#ValueB=1
#END-编辑
我想匹配 #START-EDIT 和 #END-EDIT 之间的任何 #。
具体来说,我想使用 sed 在可能有也可能没有多个 START-EDIT 和 END-EDIT 部分的各种文件上用空替换匹配 # 值(删除它们)。
【问题讨论】:
^#START-EDIT.*(#) *. *#END-EDIT$
【讨论】:
sed 是基于行的。您可以轻松地在一行中根据正则表达式进行搜索、替换。但是没有真正简单的方法来搜索/替换多行。 AWK 可能会解决问题。
如果您在一行上有正则表达式,则以下命令可能就是您要查找的内容
sed -e "/^#START-EDIT.*#END-EDIT$//" myInput.txt
【讨论】: