如何在 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 那样半途而废。