Shell

提取作為另一個命令輸出的模式列表

  • December 11, 2014

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

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.fastawhich 也可以提供我的輸出,但我希望它使用程序替換。

我嘗試了以下命令,但似乎不起作用。我只看到 4 個空行。

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

使用程序替換<()

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

還有這個(為了稍微更短和更具可讀性):

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

引用自:https://unix.stackexchange.com/questions/172049