Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux上使用shell脚本从命令行编辑XML_Xml_Linux_Command Line_Edit - Fatal编程技术网

在Linux上使用shell脚本从命令行编辑XML

在Linux上使用shell脚本从命令行编辑XML,xml,linux,command-line,edit,Xml,Linux,Command Line,Edit,我正在尝试创建一个脚本,该脚本将更改一些值,然后部署。我有以下XML: <application> <NVPairs name="Variables"> <NameValuePair> <name>Parameter/1</name> <value>MyOtherValue</value> </NameValuePair

我正在尝试创建一个脚本,该脚本将更改一些值,然后部署。我有以下XML:

<application>
    <NVPairs name="Variables">
        <NameValuePair>
            <name>Parameter/1</name>
            <value>MyOtherValue</value>
        </NameValuePair>
        <NameValuePair>
            <name>Parameter/2</name>
            <value>MyValue</value>
        </NameValuePair>
    </NVPairs>
</application>

参数/1
肌酐值
参数/2
我的价值

我正试图用SED编辑它。NVPAIRS和NameValue似乎让我有点困惑。我可以问一下如何处理NameValuePair的建议吗?我也尝试过XMLStarlet,但同样的问题。似乎无法处理NameValuePairs。

我不会尝试使用sed编辑XML。除非有一些常数可以匹配(这让你决定你是在a/1还是/2上),否则这将很难(我会说不可能,但一些sed大师会发出提示并证明我错了…)


如果你不能安装东西,比如awk或perl脚本,它可以让你保持比sed更好的最低状态。

我的水晶球今晚不工作。你想做什么,为什么不工作?LOL抱歉,我试图编辑参数/2(不是常数)和Myvalue(也不是常数)。它是XML。使用处理XML而不是模式匹配的东西。我可能会将Perl one liner与XML::libxml一起使用,因为值可以更改。另一个问题是,我无法安装任何XML工具,比如XMLStarlet等,因为这是一种正常使用,没有根访问权限。因此,我不得不使用手头的工具。我尝试使用我在这里找到的信息使用awk:但正如我所说的,这些信息并不总是相同的。我尝试了XPATH方法,但这是奇怪的XML(名称对),我第一次尝试使用scriptsAwk编辑它,它的使用更像是一种脚本语言(变量等),因此您可以保持状态,并根据状态对行进行不同的处理。您真的需要提供一个您希望处理的值类型的示例—在此之前,我们都只是猜测!我提供的示例XML是我必须处理的值。没有常数。因此SED/AWK可能不起作用。XML是JAVA EAR文件的“配置”文件。