![提取另一个命令输出的模式列表](https://linux22.com/image/60088/%E6%8F%90%E5%8F%96%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E8%BE%93%E5%87%BA%E7%9A%84%E6%A8%A1%E5%BC%8F%E5%88%97%E8%A1%A8.png)
我可以使用以下命令提取模式列表,
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