将一个字符替换为

时间:2016-04-18 17:45:34

标签: regex sed

这是我正在解析的一段xml数据

<marc:subfield code="¿">aDLC</marc:subfield>

我需要取“¿”并用小写字母“a”替换它 结果数据应如下所示:

<marc:subfield code="a">DLC</marc:subfield>

我正在运行的sed正则表达式是:

s/"¿">([a-z])/"\1">/g

1 个答案:

答案 0 :(得分:2)

您需要将()转义为以sed的默认(...)风格捕获群组BRE

s='<marc:subfield code="¿">aDLC</marc:subfield>'
sed 's/"¿">\([a-z]\)/"\1">/g' <<< "$s"

<marc:subfield code="a">DLC</marc:subfield>

或者使用-E扩展正则表达式并避免转义它们:

sed -E 's/"¿">([a-z])/"\1">/g' <<< "$s"