【问题标题】:How to change to lowercase every tags in xml file with awk or sed on Unix AIX 7.2?如何在 Unix AIX 7.2 上使用 awk 或 sed 将 xml 文件中的每个标签更改为小写?
【发布时间】:2020-01-03 04:15:58
【问题描述】:

我需要在 Unix AIX 7.2 上将 XML 文件中的所有标记转换为小写。我正在尝试使用 awk 来实现。

我正在尝试将使用正则表达式 /(\]*>)/

找到的每个标签转换为小写

我尝试过使用 sed,但 sed AIX 7.2 中不存在 \L 和 \U。 我试过 awk gsub, 如果我尝试打印,似乎整行都在 $0 中。

我已经编写了一段代码,如果它与标签匹配,它将打印tolower,否则只打印。

但是,我需要一种方法来剪切文本。

    awk '{
        gsub(/(\<[^>]*\>)/,"&"); 
        if(match($0,/(\<[^>]*\>)/)) 
            print tolower($1); 
        else 
            print $0;
        };' test.xml

这是输入:

<Record> BLAHBLAHBLAH <Record>
</RRecord> CapCapCapcaps <RRecord>

我正在努力:

<record> BLAHBLAHBLAH <record>
</rrecord> CapCapCapcaps <rrecord>

而不是我得到:

<record> blahblahblah <record>
</rrecord> capcapcapcaps <rrecord>

【问题讨论】:

  • “标签”是什么意思?
  • 标签是什么意思。您还提供了一个示例输出和您得到的结果,但您没有给我们一个示例输入。 (也输出无效的xml)
  • 抱歉,“标签”是指在 之间

标签: bash awk sed aix


【解决方案1】:

不,不是你想的那样。并不真地。 XML 不是常规语言。这是一个技术术语,“常规”。

要以正确的方式执行此操作,您需要一个 XML 解析器。解析文档,发出同样的东西。现在添加一些代码,将节点名称更改为不同的大小写。

这应该是大约 10 行 Python 或 Perl,它可以完美地工作,而不是像 RegEx 那样做一半。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-14
    • 2022-01-27
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    • 2019-04-20
    相关资源
    最近更新 更多