【问题标题】:grep a list of two strings/words and return only the first resultgrep 两个字符串/单词的列表并仅返回第一个结果
【发布时间】: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

标签: linux grep xargs


【解决方案1】:

如果没有更好地描述输入和预期输出,这可能会起作用:

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

输出 biglist.txt 中的第一行,其中包含描述和 queries.txt 中的一个查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    相关资源
    最近更新 更多