【问题标题】:How to change contents of a file in shell script?如何在 shell 脚本中更改文件的内容?
【发布时间】:2013-05-27 10:51:37
【问题描述】:

我正在创建一个脚本script1.sh,通过它我必须更改一个xml 文件(abc.xml) 的内容。 xml文件的内容是

area = xyz/a
url = "sqlserver://servername:portno/a"
username=""
password=""

area = xyz/b
url = "sqlserver://servername:portno/b"
username=""
password=""

我必须使用script1.sh 为这两个区域更改servernameportnousernamepasswordServernameportno 将在两个区域中相同,但 usernamepassword 会有所不同。那么如何才能将script1.sh 更改为abc.xml

sed -i 's/$strurl/$url/g' context.sh

这就是我正在搜索但无法搜索和更改网址的方式,其余一切都很好。我认为 url 字符串太大而无法搜索。

【问题讨论】:

  • awkperl 似乎都是合理的工具。你试过什么?替换来自哪里,它如何知道哪个用户名/密码与哪个区域对应?
  • 这看起来不像 XML。您发布的内容真的是文件的内容吗?
  • 我使用了 sed 但所有用户名和密码的值都相同
  • 请详细说明你做了什么
  • 我已经在上面进行了编辑。

标签: linux shell unix aix


【解决方案1】:

您可以使用sed 和选项-i 就地更改文件。

sed -i 's/what/towhat/g' filename.txt

如果您的 what 本身包含斜杠 (/),请使用未出现在 whattowhat 中的任何其他字符(例如 ,)。

【讨论】:

  • 我知道这一步,但是我不能用这个命令搜索和更改url,url太大无法搜索。
  • 您的网址不大,无法搜索。如果您的 URL 包含斜杠 (/),您可以使用任何命令分隔符。
【解决方案2】:

sed -i 's!$strurl!$url!g' filename

这将是答案,因为 url 本身包含“/”作为分隔符,因此我们需要在 sed 命令中使用其他分隔符

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    相关资源
    最近更新 更多