逐行读取文件,然后在另一个文件中搜索部分匹配的行

时间:2018-12-05 21:23:14

标签: linux bash while-loop grep

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

这是我当前的脚本

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

数据库中包含多行,其序列名称依次为:

 >transcript_ab
 AGTCAGTCATGTC
 >transcript_ac
 AGTCAGTCATGTC
 >transctipt_ad
 AGTCAGTCATGTC

,并且部分匹配的搜索文件包含以下文本行:

 ab
 ac

我正在寻找以下商品的退货:

 >transcript_ab
 >transcript_ac

任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

您可以改用for循环:

for i in $(cat partial_matches.txt); do
grep $i /path/to/databasefile >> /path/to/folder/outputfile.txt
done

此外,请检查您是否有错字: "/partial_matches.txt"-> "./partial_matches.txt"

答案 1 :(得分:1)

如果您正在使用GNU grep,那么您正在寻找其-f选项:

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

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

相关问题