我需要使用sed搜索在xml文件中搜索并替换CustomerEMailID的值,并替换sed s ///。我能够获得CustomerEMailID的值,如何使用sed将其替换为emailID?
//Print the value
sed -n 's/.*CustomerEMailID="\([^"]*\).*/\1/p' xmltoconvert.xml
//xml file:
<Order
CustomerEMailID="XXXX"
答案 0 :(得分:1)
试试这个:
sed 's/\(.*CustomerEMailID="\)[^"]*\(.*\)/\1emailID\2/' xmltoconvert.xml
它将替换您想要的值并将整个文件打印到终端。
输入文件:
<Order
CustomerEMailID="XXXX">
输出文件:
<Order
CustomerEMailID="emailID">
答案 1 :(得分:0)
使用awk
,您可以使用以下内容:
awk -v email="emailID" 'BEGIN{FS=OFS="\""}{for(i=1;i<=NF;i++) if($i ~ /CustomerEMailID=/) $(i+1)=email}1' file
首先将字段分隔符FS
和OFS
设置为"
。
然后它将查找与模式/CustomerEMailID=/
匹配的参数索引,并将下一个参数替换为awk
变量email
中存储的字符串。