求助shell脚本修改xml的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助shell脚本修改xml的值相关的知识,希望对你有一定的参考价值。

xml内容如下:
想通过sell脚本完成如下修改,将package="com.2.2"一行中的value和defaultValue修改掉,请问高手如何操作啊~谢谢
xml内容如下:
<setting id="15" name="10121" value="aaa" package="com.a.a" defaultValue="aaa" defaultSysSet="true" tag="null" />
<setting id="15" name="10121" value="bbb" package="com.2.2" defaultValue="bbb" defaultSysSet="true" tag="null" />

value和defaultValue修改成ccc
<setting id="15" name="10121" value="aaa" package="com.a.a" defaultValue="aaa" defaultSysSet="true" tag="null" />
<setting id="15" name="10121" value="ccc" package="com.2.2" defaultValue="ccc" defaultSysSet="true" tag="null" />

参考技术A 假设你的内容在1.xml中,执行这个命令就行了(先备份一份原文件,-i参数会直接将结果覆盖到原文件上):
sed -i 's/\(\svalue=\"\)[^\"]*\"/\1ccc\"/;s/\(\sdefaultValue=\"\)[^\"]*\"/\1ccc\"/;' 1.xml追问

a=123456
sed -i '/com.2.2/s/\(value=\"\)[^\"]*\"/\1'$a'\"/;s/\(defaultValue=\"\)[^\"]*\"/\1'$a'\"/;' 1.xml

我改成这样成功了.

本回答被提问者采纳
参考技术B 文件格式简单的化,可以用sed结合正则表达式修改。追问

我要修改com.2.2的那一行哦

追答

可私信帮写脚本或exe

求助:BAT 修改XML指定数值

xml文件在D:\Inhh\iGe\mate\Program\Bin 文件夹下,里面的内容为:
<?xml version="1.0"?>
<License>
<Serial>4E04EF4978E44189F39C69D</SerialNo>
<Signa>198D6E4987B358B14A1A7D7DB0659187127D89A168CB22F358A070D69B4BD67D41</Signature>
<Cont>
<File>1.5</File>
<Customer>Pizze</Customer>
<HT>0</HT>
<Workstation>3</Workstation>
<PDA>0</PDA>
<Printer>2</Printer>
<Kitchen>0</Kitchen>
</Content>
</License>
我要把<Workstation>3</Workstation>还有<Printer>2</Printer>里面的3和2可以随意修改,
比如打开批处理会提示Workstation改成多少,然后是Printer,可以随意输入数字修改
还有就是修改之前先读取<Workstation>3</Workstation>还有<Printer>2</Printer>里面的数值,比如这个3和2.然后在提示修改数值
谢谢帮帮忙吧

参考技术A @echo off
setlocal enabledelayedexpansion
for /f "skip=2 tokens=1-4 delims=^<^>" %%i in ('find /i "workstation" page.xml') do (
set worknum=%%k
set /p str1=Workstation修改为(当前值为:!worknum!):
)
for /f "skip=2 tokens=1-4 delims=^<^>" %%i in ('find /i "printer" page.xml') do (
set printernum=%%k
set /p str2=Printer修改为(当前值为:!printernum!):
)
for /f "tokens=* delims=" %%a in (page.xml) do (
set "content=%%a"
call set "content=%%content:<Workstation>!worknum!</Workstation>=<Workstation>!str1!</Workstation>%%"
call set "content=%%content:<Printer>!printernum!</Printer>=<Printer>!str2!</Printer>%%"
echo !content!>>result.xml
)
del page.xml
ren result.xml page.xml本回答被提问者和网友采纳

以上是关于求助shell脚本修改xml的值的主要内容,如果未能解决你的问题,请参考以下文章

求助:如何在shell脚本中添加写日志的功能

为啥python脚本返回的值会被shell修改?

shell脚本修改json中某个字段的值

linux 求助shell脚本 ping命令延迟超过100ms的包就发邮件 恢复正常也发个邮件 之后不用发

求助Linux,编写Shell脚本程序统计指定目录中普通文件的个数及其总的大小

Linux中shell命令相关问题求助大佬