【问题标题】:how parse tag xml from <xxxEND TO </xxx> in AIX sed如何在 AIX sed 中从 <xxxEND TO </xxx> 解析标签 xml
【发布时间】:2018-06-19 01:37:59
【问题描述】:

我是 aix 的新手,我需要您的支持,在一个文件中有许多标签以下列方式到达:

<xxxBEGIN
        DATA
<xxxEND

其中 xxx 是长度可变的字。

从以下结果中需要:

<xxx>
    DATA
</xxx>

问题出在 END 标签上。

sed 's/BEGIN/>/g' file.txt > file_v2.txt (correct)
sed 's/END^/'</'/g' file.txt > file_v2.txt (incorrect)

请帮忙。

【问题讨论】:

  • 您能更具体地解决您的问题吗?
  • 嗨 Danilo,我告诉你我有一个 500mb 的文本文件,其中包含带有单词 (BEGIN / END) 的假定 xml 标签。我的意图是替换这些词以提供 XML 标记的形式,以便使用 Informatica Powercenter 读取文件。

标签: xml parsing sed tags aix


【解决方案1】:

您需要检查 END 前面的单词,捕获它并在输出中在它之前添加正斜杠。

sed 's/\(\w\+\)END/\/\1>/g'

对于 BEGIN 和 END 来说,稍微更健壮的解决方案是:

sed 's/^\(<\w\+\)BEGIN/\1>/g'
sed 's/^<\(\w\+\)END/<\/\1>/g'

这将确保只拾取以“

【讨论】:

  • 您好,Thomas 感谢您的及时回复。我尝试了 END 的代码,但它不能解决我做错了什么?
  • [usr@srvprodpwc] /tmp/temp> echo '/g' 响应:
  • 你需要像\(\w\+\)这样转义括号,这是\1调用的捕获组。没有转义,您正在搜索括号。
猜你喜欢
  • 1970-01-01
  • 2016-04-24
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多