【发布时间】:2015-02-14 09:43:30
【问题描述】:
问题: 我正在尝试在文件(物种)中查找多个特定行,然后仅将每个物种名称后的第 5 行打印到新文件中。我可以单独为每个物种做这件事,但是我无法创建一个循环来遍历文档中的 1000 个物种中的每一个。 例如:
awk 'c&&!--c;/species_1$/{c=5}' results.out > speciesnames
我怎样才能使这个命令进入一个循环,以便它执行以下操作(迭代文件中的每个物种):
species 1,打印第 5 行以记录标题为speciesnames
species 2,打印第 5 行以记录标题为speciesnames
species n,打印第 5 行以记录标题为speciesnames
任何帮助将不胜感激。我对循环的经验很少。 谢谢
来自 results.out 的数据结构示例:
Query= species_1
length=341
Score
bits
Line 5, relevant info
description
description
description
description
description
description
description
nucleotides
nucleotides
nucleotides
nucleotides
nucleotides
nucleotides
nucleotides
nucleotides
nucleotides
nucleotides
nucleotides
nucleotides
nucleotides
nucleotides
nucleotides
nucleotides
nucleotides
nucleotides
data
data
data
data
data
data
Query= species_2
length=341
.......
所需的输出到文件种类名称:
Line 5, relevant info for species 1
Line 5, relevant info for species 2
Line 5, relevant info for species n
【问题讨论】:
-
那是 results.out 的上下文吗?是否只需要打印第 5 行结果?
-
上下文是每个物种都有大约 50 行与之相关的文本,但我只需要提取第 5 行。
-
“tr”命令可以跳行,并且具有循环功能。
-
打印
description和nucleotides20 次来尝试描述您的输入并不像显示一些实际数据那么有用。显示至少 3 个小块用于样本输入的代表性数据,一个用于 3 个不同物种中的每一个,每个块为 5 或 6 行。此外,根据该输入显示您想要的输出。