Bash 基于词匹配的文件替换

Bash 基于词匹配的文件替换,bash,awk,sed,Bash,Awk,Sed,我有一个文件say test.sh,其中包含以下详细信息 check_interval 1 retry_interval 1 event_handler_enabled 1 我想将事件处理程序\u启用的1行替换为事件处理程序\u启用的0 请帮助sed-i“s/\(事件处理程序已启用。*\)1/\10/“test.sh 让我们看看sed做了什么: 首先,它找到了您要更改的行。该行以事

我有一个文件say test.sh,其中包含以下详细信息

    check_interval                  1
    retry_interval                  1
    event_handler_enabled           1
我想将
事件处理程序\u启用的1
行替换为
事件处理程序\u启用的0

请帮助

sed-i“s/\(事件处理程序已启用。*\)1/\10/“test.sh


让我们看看
sed
做了什么:

  • 首先,它找到了您要更改的行。该行以
    事件处理程序\u enabled
    开头(实际上它并不关心前面有多少空格)

  • 然后,它找到了
    1
    :(
    \(事件处理程序已启用。*\)1

  • 最后,它将
    1
    更改为
    0

  • 完成了


    作为背面参考,这意味着
    sed
    将找到启用了
    事件处理程序的
    后面的所有字符,并将它们放在正确的位置:)

    您可能需要解释一下,您正在使用反向引用来保留文本中不变的部分,以便OP可以阅读更多关于它们用法的信息,如果他需要进一步熟悉topic.@DavidC.Rankin Lol好像OP关心,看看他们在问题上付出的努力。@123我同意你的看法。Loll虽然OP没有把任何东西放进去,也许还有为什么它会被否决,但是我们中的一些人确实很欣赏这个解释,谢谢!顺便说一句,答案不仅是针对OP的,也是针对每个人的,它在未来可能会有所帮助。嗨,wrfly,谢谢你的帮助。但现在,当我试图用上面的代码逐行将启用了事件处理程序的0移回启用了事件处理程序的1时,它将替换为启用了事件处理程序的01。我要找的是事件处理程序1。有什么想法吗