搜索图案并在线条上方打印直到图案或空行

时间:2016-03-25 15:52:09

标签: shell unix awk sed sh

我有一个包含

的文件
  zone name CTCFNFEVA-1DTX-CLUS3-SMA vsan 21
    pwwn 10:00:00:00:c9:82:71:c3
    pwwn 50:00:1f:e1:50:1e:d0:b9
    pwwn 50:00:1f:e1:50:1e:d0:bb
    pwwn 50:00:1f:e1:50:1e:d0:bd
    pwwn 50:00:1f:e1:50:1e:d0:bf

  zone name CTCFNFXCHC3P1-VTL-1DTX vsan 21
    pwwn 50:02:37:d3:44:57:00:01
    pwwn 50:02:37:d3:44:57:00:12
    pwwn 10:00:00:00:c9:97:08:9e


  zone name CHIIEHW02SS_HBAAE69_VMAX0424_FA2G0 vsan 21
  * fcid 0x160005 [pwwn 50:00:09:74:08:06:a1:84]
    pwwn 10:00:00:00:c9:62:ae:69

我必须搜索50:02:37:d3:44:57:00:12并在其上方和下方打印直到空行。

例如,输出应为

  zone name CTCFNFXCHC3P1-VTL-1DTX vsan 21
    pwwn 50:02:37:d3:44:57:00:01
    pwwn 50:02:37:d3:44:57:00:12
    pwwn 10:00:00:00:c9:97:08:9e

我该怎么做?

2 个答案:

答案 0 :(得分:1)

awk救援!

$ awk -v RS= '/50:02:37:d3:44:57:00:12/' file

说明:将awk设置为段落模式(-v RS=),仅打印段落匹配模式。

答案 1 :(得分:0)

的Perl:

perl -nle 'BEGIN{$/="";} print if /50:02:37:d3:44:57:00:12/;'  file