【问题标题】:sed command not replacing "\"sed 命令不替换“\”
【发布时间】:2014-07-22 20:44:07
【问题描述】:

我正在使用 sed 将文件中的内容替换为字符串“dba01upc\Fusion_test”。替换后,我看到缺少“\”字符。替换的字符串是 dba01upcFusion_test 。看起来 sed 在替换时忽略了“\”。 谁能告诉我包含所有字符的 sed 命令?

我的 Sed 命令:

sed -i "s%{"sara_ftp_username"}%"dba01upc\Fusion_test"%g" /home_ldap/user1/placeholder/Sara.xml

替换前:Sara.xml

<?xml version="1.0" encoding="UTF-8"?>
<ser:service-account >
<ser:description/>
<ser:static-account>
<con:username>{sara_ftp_username}</con:username>
</ser:static-account>
</ser:service-account>

替换后:Sara.xml

<?xml version="1.0" encoding="UTF-8"?>
<ser:service-account>
<ser:description/>
<ser:static-account>
<con:username>dba01upcFusion_test</con:username>
</ser:static-account>
</ser:service-account>

谢谢

【问题讨论】:

    标签: bash shell unix sed


    【解决方案1】:
    sed -i 's%{sara_ftp_username}%dba01upc[\]Fusion_test%g' /home_ldap/user1/placeholder/Sara.xml
    # or
    sed -i 's%{sara_ftp_username}%dba01upc\\Fusion_test%g' /home_ldap/user1/placeholder/Sara.xml
    # or
    sed -i "s%{sara_ftp_username}%dba01upc\\\Fusion_test%g" /home_ldap/user1/placeholder/Sara.xml
    

    转义\(如果是双引号则两次)

    【讨论】:

      【解决方案2】:

      试试这个:

      sed -i "s%sara_ftp_username%dba01upc\\\Fusion_test%g" /home_ldap/user1/placeholder/Sara.xml
      

      【讨论】:

      • 为什么是三个反斜杠而不是两个或四个?
      • 非常感谢您的回答..我还有另一种情况..我在 sed 命令中使用环境变量,我遇到了同样的问题(“\”没有被替换)。 . export value="dba01upc\Fusion_test" sed -i "s%{"sara_ftp_username"}%$value%g" /home_ldap/user1/placeholder/Sara.xml 如果您有任何解决此问题的建议,请告诉我?
      • 使用这个:export value="dba01upc\\\Fusion_test" sed -i "s%sara_ftp_username%$value%g" /home_ldap/user1/placeholder/Sara.xml
      • @ivan_pozdeev:请参考:stackoverflow.com/questions/2369314/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-22
      • 2022-01-10
      • 2019-02-11
      • 2018-09-16
      • 2016-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多