gpt4 book ai didi

regex - 在注释前使用 sed 替换同一行中的多个实例

转载 作者:行者123 更新时间:2023-12-05 03:13:01 26 4
gpt4 key购买 nike

我正在尝试使用 sed 将一个命令的所有实例替换为一个变量,期望它们出现在评论之后或者是另一个词的一部分。我已经接近了,能够在评论之前替换一个实例,但如果有多个实例则不行。

我有一个包含以下行的测试文件:rm rm # rm

我想读一下:$RM $RM # rm

这是我目前所拥有的:sed -i 's/\(^\|[^[#.*]]\)\brm\b/\1$RM/' file1

返回:$RM rm # rm

非常感谢任何帮助。欢迎其他不涉及 sed 的解决方案,但我可能需要一些帮助来理解它们。

谢谢!

编辑:

这只是我正在寻找的示例。不是每一行都会像这样格式化,也不是每一行都会在注释前包含命令,反之亦然。我只是在寻找一个解决方案,该解决方案也将涵盖与此示例类似的情况。抱歉没有解释。这是一个稍微好一点的例子:

   "$#"    #rm
# rm
rm # rm
rm
"rm "
'rm '
`rm `
{rm }
$# rm # rm
rm rm # rm
rm # rm rm
rmremovermlink

输出应该是:

  "$#"    #rm
# rm
$RM # rm
$RM
"$RM "
'$RM '
`$RM `
{$RM }
$# $RM # rm
$RM $RM # rm
$RM # rm rm
rmremovermlink

最佳答案

你可以使用这个 sed 命令:

sed ':a;s/^\([^#]*\)\<rm\>/\1$RM/;ta;' file
# ^ ^ ^ ^ ^ ^ ^---- go to label "a" if something is replaced
# | | | | | '---- back-reference to capture group 1
# | | | '---'---- word boundaries
# | | '---- capture group 1
# | '---- replacement (only one occurrence)
# '---- defines the label "a"

关于regex - 在注释前使用 sed 替换同一行中的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31386686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com