使用Sed中的正则表达式查找和替换值

时间:2016-10-18 05:52:32

标签: replace sed

我需要使用sed搜索在xml文件中搜索并替换CustomerEMailID的值,并替换sed s ///。我能够获得CustomerEMailID的值,如何使用sed将其替换为emailID?

//Print the value
sed -n 's/.*CustomerEMailID="\([^"]*\).*/\1/p' xmltoconvert.xml


//xml file:
<Order
    CustomerEMailID="XXXX"

2 个答案:

答案 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

首先将字段分隔符FSOFS设置为"

然后它将查找与模式/CustomerEMailID=/匹配的参数索引,并将下一个参数替换为awk变量email中存储的字符串。