grep -f和A2组合和部分匹配

时间:2014-06-25 07:57:59

标签: string awk grep

我想从grep -ffileA进行fileB次匹配。我想提取匹配的行和匹配行后面的两行。有时,匹配只是部分匹配mmu-let-7f匹配mmu-let-7f-1

我一直在尝试grep -f and grep -A2,但我不知道如何将它们合并。

的fileA

mmu-mir-125b-1
mmu-mir-30c
mmu-mir-96
mmu-let-7f
...

FILEB

>mmu-let-7f-1 MI0000562 Mus musculus let-7f-1 stem-loop
ATCAGAGTGAGGTAGTAGATTGTATAGTTGTGGGGTAGTGATTTTACCCTGTTTAGGAGA
TAACTATACAATCTATTGCCTTCCCTGAG
>mmu-let-7f-2 MI0000563 Mus musculus let-7f-2 stem-loop
TGTGGGATGAGGTAGTAGATTGTATAGTTTTAGGGTCATACCCCATCTTGGAGATAACTA
TACAGTCTACTGTCTTTCCCACG
>mmu-mir-15a MI0000564 Mus musculus miR-15a stem-loop
CCCTTGGAGTAAAGTAGCAGCACATAATGGTTTGTGGATGTTGAAAAGGTGCAGGCCATA
CTGTGCTGCCTCAAAATACAAGGA
....

2 个答案:

答案 0 :(得分:0)

尝试:

fgrep -f fileA fileB -A2 

这应该适用于你想要做的事情。

您的案例输出:

>mmu-let-7f-1 MI0000562 Mus musculus let-7f-1 stem-loop
ATCAGAGTGAGGTAGTAGATTGTATAGTTGTGGGGTAGTGATTTTACCCTGTTTAGGAGA
TAACTATACAATCTATTGCCTTCCCTGAG
>mmu-let-7f-2 MI0000563 Mus musculus let-7f-2 stem-loop
TGTGGGATGAGGTAGTAGATTGTATAGTTTTAGGGTCATACCCCATCTTGGAGATAACTA
TACAGTCTACTGTCTTTCCCACG

答案 1 :(得分:-2)

您只需要确保在模式文件的每一行末尾都有空格字符。

的fileA

mmu-mir-125b-1 
mmu-mir-30c 
mmu-mir-96 
mmu-let-7f 

FILEB

>mmu-let-7f-1 MI0000562 Mus musculus let-7f-1 stem-loop
ATCAGAGTGAGGTAGTAGATTGTATAGTTGTGGGGTAGTGATTTTACCCTGTTTAGGAGA
TAACTATACAATCTATTGCCTTCCCTGAG
>mmu-let-7f-2 MI0000563 Mus musculus let-7f-2 stem-loop
TGTGGGATGAGGTAGTAGATTGTATAGTTTTAGGGTCATACCCCATCTTGGAGATAACTA
TACAGTCTACTGTCTTTCCCACG
>mmu-mir-15a MI0000564 Mus musculus miR-15a stem-loop
CCCTTGGAGTAAAGTAGCAGCACATAATGGTTTGTGGATGTTGAAAAGGTGCAGGCCATA
CTGTGCTGCCTCAAAATACAAGGA
>mmu-let-7f MI0000562 Mus musculus let-7f stem-loop
test

在这种情况下,grep -A2 -f fileA fileB将起作用。

$ grep -A2 -f  fileA fileB
>mmu-let-7f MI0000562 Mus musculus let-7f stem-loop
test