提取另一个命令输出的模式列表

提取另一个命令输出的模式列表

我可以使用以下命令提取模式列表,

fgrep -A 1 -f patternlist.txt filename.fasta

但是,有没有一种方法可以从其他命令的输出中提取而不创建另一个文件(在本例中为 patternlist.txt)?

例如:

cut -d "      "  Cell_cycle.txt -f 1 | grep ...???... filename.fasta

编辑:

Cell_cycle.txt 如下所示:

$ cat Cell_cycle_Kegg_pathway
ctg2977_3.g207.t1   K06626
P05_Ctg654_12.g311.t2   K03094
P06_Ctg710_7.g346.t1    K05868

我想获取第一列并从 fasta 文件中提取这些序列。

编辑2:

我有一个序列列表UniqueSeq_28Dec2014.fasta

>ctg1474_1.g69.t1 (first line)
atgaaatgttggtgcagcgccctggcacttctcc...... (second line)
>ctg1475_1.g70.t1 (third line)
atgaaattgcagcgccctggcacttctcctgcag...... (fourth line)

我想打印前两个序列(从第 1 行到第 4 行)。但是,我不想使用head -4 UniqueSeq_28Dec2014.fasta它也可以提供我的输出,但我希望它使用进程替换。

我尝试了以下命令,但似乎不起作用。我只看到 4 个空行。

grep -A 1 -Ff <(grep '>' UniqueSeq_28Dec2014.fasta |head -4) UniqueSeq_28Dec2014.fasta

答案1

使用进程替换<()

fgrep -A 1 -f <(cut -d " " -f 1 Cell_cycle.txt)  filename.fasta

答案2

还有这个(为了稍微更短和更具可读性):

grep -Ff <(awk '{print $1}' Cell_cycle.txt) filename.fasta

相关内容