gpt4 book ai didi

regex - 发出运行 sed 以替换文件中的字符串

转载 作者:太空狗 更新时间:2023-10-29 11:31:56 24 4
gpt4 key购买 nike

我有一个文件 “input.txt”,在第 18 行

包含以下内容:

entry({"servicectl"}, 别名("servicectl", "status")).sysauth = "Admin"

我想替换 "Admin"为 {"Admin", "root"}---> "root"只是一个示例名称,可以是任何名称。

所以在替换之后,第 18 行应该变成

entry({"servicectl"}, 别名("servicectl", "status")).sysauth = {"Admin", "root"}

使用不同的输入名称再次运行 sed 命令:"user1"

entry({"servicectl"}, 别名("servicectl", "status")).sysauth = {"Admin", "root", "user1"}

依此类推,文件 input.txt

第 18 行 中可以有多个条目

...

我也想删除它。

也就是说,如果文件 "input.txt"Line Number: 18

包含以下内容

entry({"servicectl"}, 别名("servicectl", "status")).sysauth = {"Admin", "root", "user1"}

然后在删除 "root" 后,它应该变成:

entry({"servicectl"}, 别名("servicectl", "status")).sysauth = {"Admin", "user1"}

删除 "user1" 后,它应该变成:

entry({"servicectl"}, 别名("servicectl", "status")).sysauth = "Admin"

最佳答案

你可以试试这个sed,

添加:

sed 's/\(= *\)"\([^"]\+\)"/\1{"\2", "$entry"}/' yourfile

删除:

sed 's/\(= *\){"\([^"]\+\)", "$entry"}/\1"\2"/g' yourfile

测试:

$ cat f1
entry({"servicectl"}, alias("servicectl", "status")).sysauth = "Admin"

$ sed 's/\(= *\)"Admin"/\1{"Admin", "$entry"}/' f1 > f2
$ cat f2
entry({"servicectl"}, alias("servicectl", "status")).sysauth = {"Admin", "$entry"}

$ sed 's/{"Admin", "$entry"}/"Admin"/g' f2
entry({"servicectl"}, alias("servicectl", "status")).sysauth = "Admin"

关于regex - 发出运行 sed 以替换文件中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32943588/

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