Bash,删除空XML标记

前端之家收集整理的这篇文章主要介绍了Bash,删除空XML标记前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用bash工具我需要一些帮助

>我想从文件删除空xml标签,例如:

  1. <CreateOfficeCode>
  2. <OperatorId>ve</OperatorId>
  3. <OfficeCode>1234</OfficeCode>
  4. <CountryCodeLength>0</CountryCodeLength>
  5. <AreaCodeLength>3</AreaCodeLength>
  6. <Attributes></Attributes>
  7. <ChargeArea></ChargeArea>
  8. </CreateOfficeCode>

成为:

  1. <CreateOfficeCode>
  2. <OperatorId>ve</OperatorId>
  3. <OfficeCode>1234</OfficeCode>
  4. <CountryCodeLength>0</CountryCodeLength>
  5. <AreaCodeLength>3</AreaCodeLength>
  6. </CreateOfficeCode>

为此我通过这个命令这样做了

  1. sed -i '/><\//d' file

这不是那么严格,更像是一个技巧,更合适的是找到< pattern>< / pattern>并删除它.建议?

>其次,如何从:

  1. <CreateOfficeGroup>
  2. <CreateOfficeName>John</CreateOfficeName>
  3. <CreateOfficeCode>
  4. </CreateOfficeCode>
  5. </CreateOfficeGroup>

至:

  1. <CreateOfficeGroup>
  2. <CreateOfficeName>John</CreateOfficeName>
  3. </CreateOfficeGroup>

>作为一个整体?从:

  1. <CreateOfficeGroup>
  2. <CreateOfficeName>John</CreateOfficeName>
  3. <CreateOfficeCode>
  4. <OperatorId>ve</OperatorId>
  5. <OfficeCode>1234</OfficeCode>
  6. <CountryCodeLength>0</CountryCodeLength>
  7. <AreaCodeLength>3</AreaCodeLength>
  8. <Attributes></Attributes>
  9. <ChargeArea></ChargeArea>
  10. </CreateOfficeCode>
  11. <CreateOfficeSize>
  12. <Chairs></Chairs>
  13. <Tables></Tables>
  14. </CreateOfficeSize>
  15. </CreateOfficeGroup>

至:

  1. <CreateOfficeGroup>
  2. <CreateOfficeName>John</CreateOfficeName>
  3. <CreateOfficeCode>
  4. <OperatorId>ve</OperatorId>
  5. <OfficeCode>1234</OfficeCode>
  6. <CountryCodeLength>0</CountryCodeLength>
  7. <AreaCodeLength>3</AreaCodeLength>
  8. </CreateOfficeCode>
  9. </CreateOfficeGroup>

你能否回答个人问题?非常感谢你!

  1. sed '#n
  2. 1h;1!H
  3. ${ x
  4. :remtag
  5. s#\(\n* *\)*<\([^>]*>\)\( *\n*\)*</\2##g
  6. t remtag
  7.  
  8. p
  9. }' YourFile

(posix版本所以–posn在GNU sed上)

>以递归方式将空标签从下部杆移至上部,直至不再出现空标签.>不是XML解析器,所以类似于< tag1 prop =“< tag2>< / tag2>”> …也将删除道具内容以及xml允许的任何其他内容.

猜你在找的Bash相关文章