加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Bash,删除空XML标记

发布时间:2020-12-15 18:27:03 所属栏目:安全 来源:网络整理
导读:使用bash工具我需要一些帮助 我想从文件中删除空xml标签,例如: CreateOfficeCode OperatorIdve/OperatorId OfficeCode1234/OfficeCode CountryCodeLength0/CountryCodeLength AreaCodeLength3/AreaCodeLength Attributes/Attributes ChargeArea/ChargeArea
使用bash工具我需要一些帮助

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

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

成为:

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

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

sed -i '/><//d' file

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

>其次,如何从:

<CreateOfficeGroup>
       <CreateOfficeName>John</CreateOfficeName>
       <CreateOfficeCode>
       </CreateOfficeCode>
 </CreateOfficeGroup>

至:

<CreateOfficeGroup>
       <CreateOfficeName>John</CreateOfficeName>
 </CreateOfficeGroup>

>作为一个整体?从:

<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>

至:

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

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

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允许的任何其他内容.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读