Xml RegEx search&;替换&;折叠,但仅在某些行中

Xml RegEx search&;替换&;折叠,但仅在某些行中,xml,regex,sed,Xml,Regex,Sed,我有一个XML文件,其中的行如下: <key>a_acute</key> <string>a_acute.glif</string> <key>Aacute</key> <string>a_acute.glif</string> a\u a_.glif 我需要把它变成这样: <key>a_acute</key> <string>a_acute.glif<

我有一个XML文件,其中的行如下:

<key>a_acute</key>
<string>a_acute.glif</string>
<key>Aacute</key>
<string>a_acute.glif</string>
a\u
a_.glif
我需要把它变成这样:

<key>a_acute</key>
<string>a_acute.glif</string>
<key>Aacute</key>
<string>a_acute.glif</string>
Aacute
a_.glif
即,将后跟下划线的字母替换为大写字母(省去下划线),但仅限于以
开头的行。这就是我到目前为止所做的:

sed '/^<key/s/\(.\)_/\1/'
sed'/^
  • 作为一般规则:不要使用正则表达式来解析像XML这样的非正则语言

  • \U
    是GNU sed的一项功能,默认情况下在Mac OS X上不可用。您可以从as
    GNU sed
    或as
    gsed
    安装它

  • 如果您不想依赖外部工具,可以像这样使用perl(使用
    -i
    将文件更改到位):

    perl-i-pe的/(?)?