【问题标题】:sed wildcard search replacesed 通配符搜索替换
【发布时间】:2011-08-16 04:15:45
【问题描述】:

我在 Centos 上使用 sed,bash。

我想将 \plain 和 }} 之间的所有内容替换为以下文本行中的空格:

stuff here \plain \f2\fs20\cf2 4:21-23}} more stuff over here, could be anything.

\plain 和 }} 之间的文本会有所不同(不同的数字/数字)。如何使用通配符来包含 \plain 和 }} 之间的所有内容。

我希望一个简单的 * 可以抓住两者之间的所有内容,但 shell 中的通配符似乎不能像这样工作:

s/\\plain *}}/ /g;

答案可能是包含这个的东西? [a-zA-Z0-9.] 但这不包括文本中的反斜杠、冒号和破折号。

【问题讨论】:

    标签: bash search replace sed wildcard


    【解决方案1】:

    只需在 * 前添加点即可匹配所有内容。

    s/\\plain .*}}/ /g 应该可以工作。

    【讨论】:

      【解决方案2】:

      以下正则表达式...

      ^\\plain .*}}$
      

      ... 将匹配以\plain 开头、中间有任何内容并以}} 结尾的行。

      如果这没有用,请使用^(否定)代替.* 匹配所有非}}

      【讨论】:

      • 我澄清了我的问题。如果这是唯一可行的方法,则上述方法确实有效。 \plain 之前和 }} 之后有文本。
      • 去掉^$表示行首和行尾的信号,并使用惰性匹配
      猜你喜欢
      • 2020-06-24
      • 2011-09-09
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      • 2014-02-11
      • 2012-09-29
      • 2011-01-06
      相关资源
      最近更新 更多