【发布时间】:2014-03-10 08:09:09
【问题描述】:
我有一个文件 (biglist.txt),我需要搜索包含两个字符串的行,并且我需要输出只返回该搜索的第一个实例。字符串之一(两个)是可变的,这意味着我有一个文件,它是另一个长行分隔(硬返回)的不同字符串列表,称为(queries.txt)。第二个字符串将是一个常量词(我们称这个词为“描述”)。我需要搜索带有变量字符串 + 常量字符串的行,并且只返回此类搜索的第一个实例。
我知道这样的东西适用于单个字符串的列表。
cat queries.txt | xargs -I{} grep -m 1 {} biglist.txt > output
但我需要添加一个参数,即 queries.txt 中的每个字符串也必须与常量单词“description”位于同一行。文件“biglist.txt”有多行,每个字符串和单词“description”,我只需要输出其中一个。并非所有的行都有字符串和单词“description”,而且第一行通常没有单词“description”。这个新手感谢任何帮助。
【问题讨论】:
-
queries.txt 简化示例将为“GB12345 GB23456 XP_235699H6 etc.x20K”,但带有换行符(我不确定您是否能看到),大列表的示例文本为 GB12345,gbkey= Gene;gene=LOC409931(换行) GB12345;product=protein blah blah 所以这里的一行有“产品”一词(我可以与“描述”互换),另一行没有。有多行同时具有变量名和常量名,所以我只需要返回其中之一。
-
考虑学习如何使用GNU awk