使用shell脚本将格式化的xml文件转换为包含所有标记的单行文件

时间:2011-02-15 21:03:39

标签: xml parsing shell grep

我有这个xml文件:

<content>
     <tag1>
          <innertag1>foo</innertag1>
          <innertag2>baa</innertag2>
     </tag>
     <tag2>
          <innertag1>foo2</innertag1>
          <innertag2>baa1</innertag2>
     </tag2>
</content>

我需要使用脚本,另一个文件具有相同的信息,但只需一行:

<content><tag1><innertag1>foo</innertag1><innertag2>baa</innertag2></tag><tag2><innertag1>foo 2</innertag1><innertag2>baa 1</innertag2></tag2></content>

因为我需要这种格式才能使用grep和sed命令。我该怎么办?

感谢

2 个答案:

答案 0 :(得分:0)

普通的正则表达式怎么样? s/>\s*</></g

答案 1 :(得分:0)

tr -d '\n\t' inputfile > temp && echo >> temp && mv temp inputfile

sed -in ':a;$s/[\n\t]//g;N;ba' inputfile

适用于sed的挑剔版本:

sed -n  -e ':a' -e '$s/[\n\t]//g' -e 'N' -e 'ba' inputfile > temp && echo >> temp && mv temp inputfile

另一种选择:

perl -i -pe 'chomp unless eof; s/\t//g' inputfile

或可能:

perl -pe 'chomp unless eof; s/\t//g' inputfile > temp && echo >> temp && mv 

已修改,也会从输入文件中删除标签。