代码之家  ›  专栏  ›  技术社区  ›  Hayra

sed commdand-当字符串多次出现时,查找和替换字符串模式不工作

  •  0
  • Hayra  · 技术社区  · 7 年前

    我不是unix命令方面的专家,但我试图通过查找和替换目录下的xml文件来创建一个复杂的替换。

    这是我的文件结构:

    <LocaleCountry>
    <link href="../Countries/AZ.xml" path="/Config/Countries/AZ"/>
    <link href="../Countries/AM.xml" path="/Config/Countries/AM"/>
    </LocaleCountry>
    

    我要做的是通过使用 命令,sed是必需的,因为我们的服务器只有sed作为一个正确的命令…

    转变

    from <link href="../Countries/ to <Country file="
    from path="/Config/Countries/ to code="
    

    最后我的输出应该是:

    <LocaleCountry>
    <Country file="AZ.xml" code="AZ"/>
    <Country file="AM.xml" code="AM"/>
    </LocaleCountry>
    

    我尝试过的方法是有效的,但不是多个“link”元素,它只改变了第一个元素,不会影响其他元素,很可能我无法为我的模式创建正确的表达式…

    以下是我尝试过的:

    sed -i 's#<link href="../Countries/#<Country file="#' *.xml
    sed -i 's#path="/Config/Countries/#code="#' *.xml
    

    你能检查一下我做错了什么吗?如果可能的话,你能提出一个解决办法吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Poshi    7 年前

    告诉substitution命令使其成为全局:

    sed -i 's#<link href="../Countries/#<Country file="#g' *.xml
    sed -i 's#path="/Config/Countries/#code="#g' *.xml