grep – 比较两个文本文件并找到匹配的行

我有两个文件A和B. A看起来像这样(4到6行):

GAGA
CAGA
GGGT
TATT

文件B是一个包含数千行的非常大的文件,这是一个简短的例子:

AAATGTCAAGAGACAGAAATGTCAAGAGGGT
AAGGGGGTTTATAATCATAAATCAAAGAAAT
ATATACAGAAATGTCAAGAGACAGAAATGTC
TCAAGAGACAGAAATGTCAAGAGGGTCTATA
AAGAGGGTCTATAATCATAAATCAAAGAAAT
AAGAGGGTCTATAATCATAAATCAAAGAAAT
ATACAGAAATGTCAAAACAGAAATGTCAAGG
ATATACAGAATATACAGAAATGTCAAGTTAT
ACAGAATATACAGAAATGTCAAGTTATATAC
ATATACAGAAATGTCAAGAGACAGAAATGTC
TCAGAATATAGTATTCTATTATATACAGAAA
AATATAGTATTCTATTATATACAGAAATGTC
GAATATACAGAAATGTCAAGTTATATACAGA
TATACAGAATATAGTATTCTATTATATACAG
CAGAATATAGTATTCTATTATATACAGAATA
AGTTATATACAGAATATAGTATTCTATTATA
TACAGAATATAGTATTCTATTATATACAGAA
CAGAAATGTCAAGTTATATACAGAATATAGT

我需要在文件B的所有行中搜索文件A中的每个字符串,并从文件B中恢复包含来自A的每个字符串的前10行.我尝试过grep和awk但没有很好的结果.谢谢

最佳答案
由于您的模式只有四到六行,为什么不在OR模式中使用它们?限制为在第二个文件“bigDNA.txt”上运行的10个匹配的示例:

grep -E 'GAGA|CAGA|GGGT|TATT' -m 10 bigDNA.txt

这样可以避免手动从文件patt.txt中键入模式.它通过|连接线(追加|每行,删除换行符,删除尾随|):

grep -E "$(sed 's#$#|#' patt.txt | tr -d '\n' | sed 's#|$##')" -m 10 bigDNA.txt

转载注明原文:grep – 比较两个文本文件并找到匹配的行 - 代码日志