Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 逐行读入文件,并在另一个文件中搜索部分匹配的行_Linux_Bash_While Loop_Grep - Fatal编程技术网

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

Linux 逐行读入文件,并在另一个文件中搜索部分匹配的行,linux,bash,while-loop,grep,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 < "/parti

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

这是我目前的剧本

while read -r line; do
    grep $line /path/to/databasefile >> /path/to/folder/outputfile.txt
done < "/partial_matches.txt"
部分匹配的搜索文件有几行文本:

 ab
 ac
我正在寻找回报:

 >transcript_ab
 >transcript_ac

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

您可以改用for循环:

for i in $(cat partial_matches.txt); do
grep $i /path/to/databasefile >> /path/to/folder/outputfile.txt
done
此外,请检查您是否有打字错误:
“/partial\u matches.txt”
->
“/partial\u matches.txt”

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

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

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

那么
/outputfile.txt
是空的吗?(顺便问一下,你是如何写入
/
?你是以root身份运行的吗?)@RobinGreen是的outputfile.txt是空的,我只是没有包括文件的路径,然而,我在问题中编辑并澄清了您是否有权限写入该文件?@RobinGreen是的,在我的用户目录中并不一定意味着您有权限写入该文件。请查收。
grep -f /partial_matches.txt /path/to/databasefile