我有一个文件,该文件与另一个文件中的行部分匹配。为了做到这一点,我试图生成一个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
任何帮助将不胜感激。谢谢。
答案 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
)