Bash,删除空XML标记

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

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

@H_301_3@<CreateOfficeCode> <OperatorId>ve</OperatorId> <OfficeCode>1234</OfficeCode> <CountryCodeLength>0</CountryCodeLength> <AreaCodeLength>3</AreaCodeLength> <Attributes></Attributes> <ChargeArea></ChargeArea> </CreateOfficeCode>

成为:

@H_301_3@<CreateOfficeCode> <OperatorId>ve</OperatorId> <OfficeCode>1234</OfficeCode> <CountryCodeLength>0</CountryCodeLength> <AreaCodeLength>3</AreaCodeLength> </CreateOfficeCode>

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

@H_301_3@sed -i '/><\//d' file

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

>其次,如何从:

@H_301_3@<CreateOfficeGroup> <CreateOfficeName>John</CreateOfficeName> <CreateOfficeCode> </CreateOfficeCode> </CreateOfficeGroup>

至:

@H_301_3@<CreateOfficeGroup> <CreateOfficeName>John</CreateOfficeName> </CreateOfficeGroup>

>作为一个整体?从:

@H_301_3@<CreateOfficeGroup> <CreateOfficeName>John</CreateOfficeName> <CreateOfficeCode> <OperatorId>ve</OperatorId> <OfficeCode>1234</OfficeCode> <CountryCodeLength>0</CountryCodeLength> <AreaCodeLength>3</AreaCodeLength> <Attributes></Attributes> <ChargeArea></ChargeArea> </CreateOfficeCode> <CreateOfficeSize> <Chairs></Chairs> <Tables></Tables> </CreateOfficeSize> </CreateOfficeGroup>

至:

@H_301_3@<CreateOfficeGroup> <CreateOfficeName>John</CreateOfficeName> <CreateOfficeCode> <OperatorId>ve</OperatorId> <OfficeCode>1234</OfficeCode> <CountryCodeLength>0</CountryCodeLength> <AreaCodeLength>3</AreaCodeLength> </CreateOfficeCode> </CreateOfficeGroup>

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

@H_301_3@sed '#n 1h;1!H ${ x :remtag s#\(\n* *\)*<\([^>]*>\)\( *\n*\)*</\2##g t remtag p }' YourFile

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

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

猜你在找的Bash相关文章