在其他文件中搜索一个文件行,在行号后搜索输出

时间:2017-07-19 18:24:20

标签: python-2.7

下面有两个文件A和B.我想在Bfile中搜索A文件的行,并且匹配的条目应该在行号后只写入一个字的其他文件 答:

5000cca025884d5
5000cca025a1ee6

B:

   0. c0t5000CCA025A1EE6Cd0 <preSUN30G-A2B0-279.40GB>
      /scsi_vhci/disk@g5000cca025a1ee6c

   1. c0t5000CCA025A28FECd0 <preSUN30G-A2B0-279.40GB>
      i/disk@g5000cca025a28fec`

   2. c0t5000CCA0258BA1DCd0 <HsdfdsSUN30G-A2B0 cyl 46873 alt 2 hd 20 sec >
      i/disk@g5000cca0258ba1dc

   3. c0t5000CCA025884D5Cd0 <UN300G cyl 46873 alt 2 hd 20 sec 625>  solaris
      i/disk@g5000cca025884d5c`

   4. c0t5000CCA02592705Cd0 <UN300G cyl 46873 alt 2 hd 20 sec 625>  solaris
      i/disk@g5000cca02592705c

1 个答案:

答案 0 :(得分:0)

awk 'FNR == 1 && NR != 1 { start=1 } start != 1 { if ($0 != "" ) { lnes[$0]="" } } start==1 { for ( i in lnes ) { if ( $0 ~ i ) { print $1 >> "Cfile" } } }' Afile Bfile

其中Afile是包含两行的文件而Bfile是另一个文件,我们使用awk同时处理这两个文件。我们首先阅读Afile并将每行读入一个数组(lnes)。然后在第一个文件的末尾/第二个文件的开头(FNR == 1&amp;&amp; NR!= 1),我们循环遍历数组lnes中的每个条目,并且模式匹配Bfile中的行。如果匹配,则将第一个以空格分隔的字段的打印重定向到文件Cfile。