gpt4 book ai didi

shell - 在 Ubuntu 中使用 sed 将字符串替换为特殊字符值

转载 作者:行者123 更新时间:2023-12-04 18:40:16 26 4
gpt4 key购买 nike

以下是 xml 文件,其中 STORAGE_ACCOUNT_KEY 应替换为 EoKpaH0W/kqTv9awgIpQX5s+qQwGzXUSxMxhRjfSWG7SIUTWhut1OYQkNxhb3/9UKGf+g4tc3UaC0zKMTSrTNg==

   <property>
<name>fs.azure.account.key.storageaccountname.blob.core.windows.net</name>
<value>STORAGE_ACCOUNT_KEY</value>
</property>

我尝试了以下方法。但没有什么能帮助我解决它。
  • 在 s 之后和 g 之前使用/

  • sed -i "s/STORAGE_ACCOUNT_KEY/EoKpaH0W/kqTv9awgIpQX5s+qQwGzXUSxMxhRjfSWG7SIUTWhut1OYQkNxhb3/9UKGf+g4tc3UaC0zKMTSrTNg==/g" test.xml



    错误:-
    sed: -e expression #1, char 32: unknown option to `s'
  • 使用 | s 之后和 g 之前

  • sed -i "s|STORAGE_ACCOUNT_KEY/EoKpaH0W/kqTv9awgIpQX5s+qQwGzXUSxMxhRjfSWG7SIUTWhut1OYQkNxhb3/9UKGf+g4tc3UaC0zKMTSrTNg==|g" test.xml


    错误:-
    sed: -e expression #1, char 112: unterminated `s' command

    注意:- $STORAGE_ACCOUNT_KEY 是一个动态变量,如下所示
    sed -i "s|STORAGE_ACCOUNT_KEY/$STORAGE_ACCOUNT_KEY|g"

    最佳答案

    要替换 XML,我建议使用 XML 解析器(例如 xmllint )而不是 sed .

    也就是说,您的 sed表达是错误的。
    sed s命令使用 3 个分隔符(您想要的任何可打印字符),但是这 3 个必须相同,并且由 s 之后的那个定义。命令。

    s/foo/bar/g   # right
    s|foo|bar|g # right
    s|foo/bar|g # wrong

    由于您将字符串替换为 base64 字符串,因此不应使用任何 base64 字符,因此请勿使用 /作为 sed在这种情况下的分隔符。

    你的表达应该是这样的:
    sed -i "s|STORAGE_ACCOUNT_KEY|EoKpaH0W/kqTv9awgIpQX5s+qQwGzXUSxMxhRjfSWG7SIUTWhut1OYQkNxhb3/9UKGf+g4tc3UaC0zKMTSrTNg==|g" test.xml

    请注意 g如果每行只有 1 个要替换的字符串,则可能不需要命令末尾的修饰符。

    关于shell - 在 Ubuntu 中使用 sed 将字符串替换为特殊字符值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50132746/

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