次のコマンドを使用してパターンリストを抽出できます。
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