我想从grep -f
到fileA
进行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
....
答案 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