使用带 sed 的正则表达式用下划线替换空格

Use regex with sed to replace spaces by underscore

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

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

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

有人可以帮忙吗?

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

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

如果您的 sed 不是 gnu sed,NUMBER+g 可能不受支持。但是你可以做这个技巧:

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

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