为linux

时间:2018-01-30 15:02:50

标签: regex linux sed

鉴于100个可以包含UUID的XML文件,我想查找所有UUID并在该UUID的开头添加下划线。 XML文件的内容可能看起来不同,但一个例子是:

<bpmndi:BPMNEdge bpmnElement="627b6548-aa19-47c6-a87c-31017810a934-_jbpm-unique-3490" >

我想将其转换为:

<bpmndi:BPMNEdge bpmnElement="_627b6548-aa19-47c6-a87c-31017810a934-_jbpm-unique-3490" >

到目前为止我所拥有的是查找所有UUID的正则表达式:

ag [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}

问题在于,我发现的大多数其他文章都是关于如何启动包含与某些字符匹配的行或替换整行。我只想在比赛中添加一个角色。

1 个答案:

答案 0 :(得分:1)

你的正则表达式是正确的。您可以在sed中将其用作:

sed -i.bak -E 's/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/_&/g' file

替换表达式_&将匹配的文本加上下划线。