【问题标题】:Use regex with sed to replace spaces by underscore使用带有 sed 的正则表达式通过下划线替换空格
【发布时间】:2016-02-26 01:51:45
【问题描述】:

我需要用 sed 将文件中以下 PCRE 的所有匹配替换为下划线。

/(?:^Node-path: |\G)\S+\K\h+/gm

我已尝试转义括号,删除 G、S、K 的转义...但仍然无法正常工作。

有人可以帮忙吗?

【问题讨论】:

  • sed 不支持 pcre。解释你想要实现什么,用例子更好,然后有人可以帮助你。
  • 在 svn 转储文件中,我想用下划线替换以“Node-path:”开头的行中的所有空格,以用空格替换我的所有分支和标签。
  • 如果可行,试试这条线:sed '/^Node-path:/s/ /_/g'
  • 它几乎可以工作,唯一的问题是替换“路径:”之后的空格,我必须保留这个
  • 使用/不使用 gnu sed 检查下面的答案。

标签: regex bash sed pcre


【解决方案1】:

如果您的 sed 是 gnu sed,您可以混合使用 NUMBERg 修饰符以跳过第一个空格:

sed '/^Node-path:/s/ /_/2g'

如果您的 sed 不是 gnu sed,则可能不支持 NUMBER+g。但是你可以做到这一点:

sed '/^Node-path:/{s/ /_/g;s/_/ /}'

sed '/^Node-path:/{s/ /_/g;s/:_/: /}'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多