Linux grep两个字符串/单词的列表并仅返回第一个结果

Linux grep两个字符串/单词的列表并仅返回第一个结果,linux,grep,xargs,Linux,Grep,Xargs,我有一个文件(biglist.txt),我需要搜索包含两个字符串的行,我需要输出只返回该搜索的第一个实例。字符串1(两个中的一个)是可变的,这意味着我有一个文件,它是另一个长行分隔(硬返回)的不同字符串列表,名为(querys.txt)。第二个字符串将是一个常量字(我们称之为“description”)。我需要搜索变量字符串+常量字符串的行,并且只返回这种搜索的第一个实例 我知道这样的东西可以用于单个字符串列表 cat queries.txt | xargs -I{} grep -m 1 {}

我有一个文件(biglist.txt),我需要搜索包含两个字符串的行,我需要输出只返回该搜索的第一个实例。字符串1(两个中的一个)是可变的,这意味着我有一个文件,它是另一个长行分隔(硬返回)的不同字符串列表,名为(querys.txt)。第二个字符串将是一个常量字(我们称之为“description”)。我需要搜索变量字符串+常量字符串的行,并且只返回这种搜索的第一个实例

我知道这样的东西可以用于单个字符串列表

cat queries.txt | xargs -I{} grep -m 1 {} biglist.txt > output

但我需要添加一个参数,即querys.txt中的每个字符串也必须与常量单词“description”在一行上。文件“biglist.txt”有多行,每行都有字符串和单词“description”,我只需要输出其中一行。并非所有的行都有字符串和单词“description”,并且第一行通常没有单词“description”。这个新手很感激任何帮助

如果没有更好地描述输入和预期输出,这可能会完成以下工作:

grep description biglist.txt | grep -f queries.txt | head -n1

输出biglist.txt中包含说明的第一行和querys.txt中的一个查询。

querys.txt简化示例将是“GB12345 GB23456 XP_235699H6 etc.x20K”,但带有换行符(我不确定您是否可以看到),大列表的示例文本将是GB12345,gbkey=Gene;gene=LOC409931(断线)GB12345;product=蛋白质等等,所以这里的一行有“product”这个词(我可以用“description”替换),而另一行没有。有多个既有变量名又有常数名的行,所以我只需要返回其中一个。考虑学习如何使用。