替换bash中未知的XML值

替换bash中未知的XML值,xml,linux,bash,command-line,Xml,Linux,Bash,Command Line,我有一个XML文件,格式如下: <?xml version="1.0" encoding="utf-8"?> <config> <input> <...> <file>1</file> ... </...> <network> <file>2</file> ... </ne

我有一个XML文件,格式如下:

<?xml version="1.0" encoding="utf-8"?>
<config>
  <input>
    <...>
        <file>1</file>
        ...
    </...>
    <network>
        <file>2</file>
        ...
    </network>
  </input>
  <output>
    <...>...</...>
    <file>...</file>
    ...
  </output>
</config> 

1.
...
2.
...
...
...
...
我想替换命令行中..中的值,但遇到了一些问题

第一个问题是有多个名为“file”的参数,那么如何替换我想要的特定参数中的值呢


第二个问题是,实际上我不知道参数“file”的值,是否有一种方法可以在不知道的情况下替换该值?

可以使用xpath和xmlstarlet来实现这一点edit@MévatlavéKraspek那么有没有办法只使用普通的bash命令,而不安装xpath/xmlstarlet?只有xmlstarlet可以安装。xpath只是一种查询语言。或者您可以编写一个python、perl、ruby脚本,“有办法吗?”是一个错误的问题。有一种方法可以一次编写一个应用程序,但您不应该这样做。在这里,您不应该像@MévatlavéKraspek所建议的那样,在没有XML解析器或XPath之类的XML工具的情况下解析XML:查看可以从bash调用的许多脚本语言中的xmlstarlet或XML处理工具(而不是regex)。