捆绑相应的XML条目

时间:2015-12-02 03:55:38

标签: xml sed xml-parsing grep tr

我有一个示例xml文件input.xml

<employee>
<userid>1</userid>
<name>Puneetha B M</name>
<designation>Developer</designation>
</employee>
<employee>
<userid>2</userid>
<name>Bhoomika</name>
<designation>Analyst</designation>
</employee>

现在我需要将其转换为以下格式(输出文件名output.xmlb):我需要将每条记录转换为一行

<employee> <userid>1</userid> <name>Puneetha B M</name> <designation>Developer</designation> </employee>
<employee> <userid>2</userid> <name>Bhoomika</name> <designation>Analyst</designation> </employee>

对于此转换,作者在unix中使用了以下命令。

cat input.xml | tr -d '&' | tr '\n' ' ' | tr '\r' ' ' | sed 's|</employee>|</employee>\n|g' | grep -v '^\s*$' > output.xmlb

任何人都可以帮助我理解这些unix命令是如何工作的。 如果您不太了解我的问题,请访问以下链接: http://blog.puneethabm.in/load-xml-file-to-hive-without-java-code/ 在这里,我想了解Step1

2 个答案:

答案 0 :(得分:0)

gawk测试OK

sed '/employee/{:a;N;/<\/employee>/!ba;s/\n/ /g;}' file

或使用Sed

MyEvent myEvent = new MyEvent();
//Your code to set myEvent
ObjectMapper mapper = new ObjectMapper();
String str1 = mapper.writeValueAsString(myEvent);

答案 1 :(得分:0)

使用此:

tr '\n' ' ' <infile | sed 's|\(</employee>\) |\1\n|g' >outfile
  • tr用空格替换所有换行符。
  • sed在关闭员工代码后添加换行符。

输出:

<employee> <userid>1</userid> <name>Puneetha B M</name> <designation>Developer</designation> </employee>
<employee> <userid>2</userid> <name>Bhoomika</name> <designation>Analyst</designation> </employee>