+ -
当前位置:首页 → 问答吧 → shell 文本处理问题

shell 文本处理问题

时间:2011-07-21

来源:互联网

现有文本如下:
*************************** 1. row ***************************
     oid_index: 0
       ip_addr: 10.2.138.200
          mask: 255.255.255.0
      maskSize: 24
     interface: bond0
ip_config_type: EXT_IP_VIRTUAL
  address_type: EXT_IP_IPV4
   fkcomponent: NULL
    fkprot_grp: 2
*************************** 2. row ***************************
     oid_index: 7
       ip_addr: 10.2.21.200
          mask: 255.255.255.255
      maskSize: 32
     interface: spi1
ip_config_type: EXT_IP_VIRTUAL
  address_type: EXT_IP_IPV4
   fkcomponent: NULL
    fkprot_grp: 3

想要的结果:
     oid_index       0                             7
       ip_addr        10.2.138.200          10.2.21.200
          mask         255.255.255.0        255.255.255.255
      maskSize      24                           32
     interface        bond0                     spi1
ip_config_type    EXT_IP_VIRTUAL     EXT_IP_VIRTUAL
  address_type   EXT_IP_IPV4           EXT_IP_IPV4
   fkcomponent   NULL                       EXT_IP_IPV4
    fkprot_grp      2                             3

列之间用TAB分割即可。不知shell如何实现。

作者: hfzdh   发布时间: 2011-07-21

join -t ":" -o 1.1 1.2 2.2 1.row 2.row | sed 's/:/\t/g'

作者: xinglu1983   发布时间: 2011-07-21

如果对顺序没要求的话这样:
  1. awk '!/*/{a[$1]=a[$1]"\t"$2}END{for(i in a)print i,a[i]}' file | column -t
  2. ip_config_type:  EXT_IP_VIRTUAL  EXT_IP_VIRTUAL
  3. fkprot_grp:      2               3
  4. mask:            255.255.255.0   255.255.255.255
  5. fkcomponent:     NULL            NULL
  6. maskSize:        24              32
  7. interface:       bond0           spi1
  8. oid_index:       0               7
  9. address_type:    EXT_IP_IPV4     EXT_IP_IPV4
  10. ip_addr:         10.2.138.200    10.2.21.200
复制代码

作者: zooyo   发布时间: 2011-07-21