下面有两个文件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
答案 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。