linux - 逐行读入文件并在另一个文件中搜索部分匹配的行

标签 linux bash while-loop grep

我有一个文件与另一个文件中的行部分匹配。为了做到这一点,我希望生成一个带有 read 的 while 循环,并将每行部分匹配的变量替换为 grep 命令,以搜索具有部分匹配的数据库文件,但由于某种原因,我没有得到输出(一个空的outputfile.txt)。

这是我当前的脚本

while read -r line; do
    grep $line /path/to/databasefile >> /path/to/folder/outputfile.txt
done < "/partial_matches.txt"

数据库有多行,其中包含序列名称,然后是 DNA 序列:

 >transcript_ab
 AGTCAGTCATGTC
 >transcript_ac
 AGTCAGTCATGTC
 >transctipt_ad
 AGTCAGTCATGTC

并且部分匹配的搜索文件具有文本行:

 ab
 ac

我正在寻找以下返回:

 >transcript_ab
 >transcript_ac

如有任何帮助,我们将不胜感激。谢谢。

最佳答案

如果您使用的是 GNU grep,那么它的 -f 选项就是您要寻找的:

grep -f /partial_matches.txt /path/to/databasefile

(如果partial_matches.txt中没有任何模式而只有字符串,则使用grep -F而不是grep)

关于linux - 逐行读入文件并在另一个文件中搜索部分匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53640976/

相关文章:

linux - 来自 linux 中重新分配变量的回显值

c# - 基本的 while 循环 c#

Linux 模块 makefile 编译错误

linux - 用外部程序获取命令行上的内容

linux - 如何在 Linux 中随机化文本文件的列

json - 从命令行参数生成 JSON

linux - Grep 中的行编号

linux - 验证服务器证书OpenSSL

Python:IDE 中的代码是正确的,但作业中的代码不正确

php - While循环基于关联数组php?