如何在 Unix AIX 7.2 上使用 awk 或 sed 将 xml 文件中的每个标签更改为小写?
How to change to lowercase every tags in xml file with awk or sed on Unix AIX 7.2?
我需要在 Unix AIX 7.2 上将 XML 文件中的所有标记转换为小写。我正在尝试使用 awk 实现它。
我正在尝试将使用正则表达式 /(\<[^>]*>)/
找到的每个标签转换为小写
我试过使用 sed,但是 \L 和 \U 在 sed AIX 7.2 中不存在。
我试过 awk gsub,
如果我尝试打印它,似乎整行都在 $0 中。
我写了一段代码,如果它匹配一个标签,它会打印tolower
,否则只打印。
但是,我需要一种剪切文本的方法。
awk '{
gsub(/(\<[^>]*\>)/,"&");
if(match([=11=],/(\<[^>]*\>)/))
print tolower();
else
print [=11=];
};' test.xml
这是输入:
<Record> BLAHBLAHBLAH <Record>
</RRecord> CapCapCapcaps <RRecord>
我正在尝试获取:
<record> BLAHBLAHBLAH <record>
</rrecord> CapCapCapcaps <rrecord>
我得到的是:
<record> blahblahblah <record>
</rrecord> capcapcapcaps <rrecord>
不,不是你想的那样。并不真地。 XML 不是常规语言。那是专业术语,"Regular".
要以正确的方式做到这一点,您需要一个 XML 解析器。解析文档,发出同样的东西。现在添加一些代码,将节点名称更改为不同的大小写。
这应该是大约 10 行 Python 或 Perl,它会完美地工作,而不是像 RegEx 那样半途而废。
我需要在 Unix AIX 7.2 上将 XML 文件中的所有标记转换为小写。我正在尝试使用 awk 实现它。
我正在尝试将使用正则表达式 /(\<[^>]*>)/
找到的每个标签转换为小写我试过使用 sed,但是 \L 和 \U 在 sed AIX 7.2 中不存在。 我试过 awk gsub, 如果我尝试打印它,似乎整行都在 $0 中。
我写了一段代码,如果它匹配一个标签,它会打印tolower
,否则只打印。
但是,我需要一种剪切文本的方法。
awk '{
gsub(/(\<[^>]*\>)/,"&");
if(match([=11=],/(\<[^>]*\>)/))
print tolower();
else
print [=11=];
};' test.xml
这是输入:
<Record> BLAHBLAHBLAH <Record>
</RRecord> CapCapCapcaps <RRecord>
我正在尝试获取:
<record> BLAHBLAHBLAH <record>
</rrecord> CapCapCapcaps <rrecord>
我得到的是:
<record> blahblahblah <record>
</rrecord> capcapcapcaps <rrecord>
不,不是你想的那样。并不真地。 XML 不是常规语言。那是专业术语,"Regular".
要以正确的方式做到这一点,您需要一个 XML 解析器。解析文档,发出同样的东西。现在添加一些代码,将节点名称更改为不同的大小写。
这应该是大约 10 行 Python 或 Perl,它会完美地工作,而不是像 RegEx 那样半途而废。