他のコマンドで出力されたパターンリストの抽出

他のコマンドで出力されたパターンリストの抽出

次のコマンドを使用してパターンリストを抽出できます。

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)

最初の2つのシーケンス(ライン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

関連情報