【发布时间】:2016-02-07 08:52:17
【问题描述】:
由于我是一名生物学家,并且通过修补和编辑此类论坛中的代码来做我的信息学,因此对于新手的错误,我提前道歉。
我一直在尝试迭代文件并在 File2 中搜索模式,而该模式是 File1 中的第一行。我的目标是在模式后追加一行到 outFile 中。
我的第一次尝试是像这样插入正则表达式:
awk 'c&&!--c;/"${head -1 "$File1"}"/{c=1}' "$File2" >> outFile
第二个将模式存储到变量中:
pattern=$(head -1 "$File1")
awk 'c&&!--c;/"$pattern"/{c=1}' "$File2" >> outFile
(File1 和 File2 标有“$”,因为我用 for 循环调用它们。)
但两者都不起作用。如果我直接写模式它工作正常,所以其他一切似乎都很好。
所以我正在处理序列数据,在爆破之后,我得到了 File1 的命中列表,看起来像这样:
BLAST_hit_Jerry
BLAST_hit_Tom
BLAST_hit_Dog
...
现在杰瑞是最棒的。我想提取第一行(BLAST hit Jerry)并在序列文件(File2)中对其进行模式匹配,如下所示:
>BLAST_hit_BugsBunny_andsomethingelse
unique_sequence_BugsBunny
>BLAST_hit_MickyMouse_andsomethingelse
unique_sequence_MickyMouse
>BLAST_hit_Jerry_andsomethingelse
unique_sequence_Jerry
...
我有许多 File1 BLAST 命中文件和相应的 File2 序列文件,我对其进行迭代,并且总是将一个与最高 BLAST 命中相对应的唯一序列文件存储到 outFile 中。 outFile 看起来像:
unique_sequence_Jerry
unique_sequence_from_second_loop_(other sequence corresponding to next top BLAST hit)
unique_sequence ...
感谢您的帮助!
【问题讨论】:
-
您要匹配的是正则表达式模式还是固定字符串?
-
我正在尝试匹配正则表达式,它返回字符串(File1 中的第一行)。我刚刚用固定字符串验证了其余代码工作正常。
-
在文件夹中,我有多个 File1 - File2 对,我对其进行迭代并将输出存储到单个 outFile 中。
-
感谢您添加示例输入,但它与输出的关系并不完全清楚。您能否显示特定输入的准确输出?
标签: regex bash variables pattern-matching