将 XML 标记值匹配的前两个字符替换为静态值
Replace First Two Characters of XML Tag Value Match with Static Value
如果模式匹配不是 00
,我正在尝试用 00
替换 XML 标签 <LineStyle><color>
值匹配的前两个字符。
XML
<?xml version="1.0" encoding="UTF-8"?>
<LineStyle>
<color>ff969696</color>
</LineStyle>
<color>ff969696</color>
<LineStyle>
<color>e680e680</color>
</LineStyle>
<color>e680e680</color>
<LineStyle>
<color>e680f7f7</color>
</LineStyle>
<color>e680f7f7</color>
<LineStyle>
<color>e67c88f4</color>
</LineStyle>
<color>e67c88f4</color>
例如,<LineStyle><color>ff......
或 <LineStyle><color>e6......
的模式匹配将被替换为 <LineStyle><color>00......
等等。
尝试的代码
sed 's/<LineStyle><color>[0-9][a-z]*/<LineStyle><color>00*/g'
使用这个 Perl one-liner:
perl -i.bak -0777 -pe 's{( <LineStyle> \s* <color> ) .. }{00}gxms' in_file
Perl one-liner 使用这些命令行标志:
-e
:告诉 Perl 查找代码 in-line,而不是在文件中。
-p
:一次循环输入一行,默认情况下将其分配给 $_
。在每次循环迭代后添加 print $_
。
-i.bak
:编辑输入文件in-place(覆盖输入文件)。在覆盖之前,通过在其名称后附加扩展名 .bak
来保存原始文件的备份副本。
-0777
: Slurp 整个文件。
正则表达式使用这些修饰符:
/g
: 重复匹配模式。
/x
: 为了便于阅读,忽略空格和注释。
/m
: 允许多行匹配。
/s
: 允许 .
匹配换行符。
另请参见:
perldoc perlrun
: how to execute the Perl interpreter: command line switches
perldoc perlre
: Perl regular expressions (regexes)
perldoc perlrequick
: Perl regular expressions quick start
如果模式匹配不是 00
,我正在尝试用 00
替换 XML 标签 <LineStyle><color>
值匹配的前两个字符。
XML
<?xml version="1.0" encoding="UTF-8"?>
<LineStyle>
<color>ff969696</color>
</LineStyle>
<color>ff969696</color>
<LineStyle>
<color>e680e680</color>
</LineStyle>
<color>e680e680</color>
<LineStyle>
<color>e680f7f7</color>
</LineStyle>
<color>e680f7f7</color>
<LineStyle>
<color>e67c88f4</color>
</LineStyle>
<color>e67c88f4</color>
例如,<LineStyle><color>ff......
或 <LineStyle><color>e6......
的模式匹配将被替换为 <LineStyle><color>00......
等等。
尝试的代码
sed 's/<LineStyle><color>[0-9][a-z]*/<LineStyle><color>00*/g'
使用这个 Perl one-liner:
perl -i.bak -0777 -pe 's{( <LineStyle> \s* <color> ) .. }{00}gxms' in_file
Perl one-liner 使用这些命令行标志:
-e
:告诉 Perl 查找代码 in-line,而不是在文件中。
-p
:一次循环输入一行,默认情况下将其分配给 $_
。在每次循环迭代后添加 print $_
。
-i.bak
:编辑输入文件in-place(覆盖输入文件)。在覆盖之前,通过在其名称后附加扩展名 .bak
来保存原始文件的备份副本。
-0777
: Slurp 整个文件。
正则表达式使用这些修饰符:
/g
: 重复匹配模式。
/x
: 为了便于阅读,忽略空格和注释。
/m
: 允许多行匹配。
/s
: 允许 .
匹配换行符。
另请参见:
perldoc perlrun
: how to execute the Perl interpreter: command line switches
perldoc perlre
: Perl regular expressions (regexes)
perldoc perlrequick
: Perl regular expressions quick start