さまざまなタンパク質項目に関する情報を含むファイルがあります。各項目には、配列の詳細(一番上の行)、配列内の文字が見つかった回数(2行目)、3行目のアミノ酸文字が含まれています。
以下の例:
sp|Q5N386|PETN_SYNP6 Cytochrome b6-f complex subunit 8 OS=Synechococcus sp. (strain ATCC 27144 / PCC 6301 / SAUG 1402/1) OX=269084 GN=petN PE=3 SV=1
A=4 D=1 E=1 F=4 G=5 I=1 L=5 M=2 N=1 R=1 S=2 T=2 V=3 W=2
Amino acid alphabet = 14
sp|Q20EX4|PETG_OLTVI Cytochrome b6-f complex subunit 5 OS=Oltmannsiellopsis viridis OX=51324 GN=petG PE=3 SV=1
A=2 D=1 E=1 F=1 G=4 I=1 L=7 M=1 P=2 Q=1 R=2 S=1 T=2 V=6 Y=2
Amino acid alphabet = 15
sp|P81612|MYTA_MYTED Mytilin-A OS=Mytilus edulis OX=6550 PE=1 SV=1
A=5 C=8 F=2 G=4 K=4 R=6 S=3 W=1 Y=1
Amino acid alphabet = 9
あるすべての項目を探したいときに、Amino acid alphabet = 9
前の2行を別のファイルに印刷するにはどのコマンドを使用する必要がありますか?これらの出力ファイルは次のようにする必要があります。
sp|P81612|MYTA_MYTED Mytilin-A OS=Mytilus edulis OX=6550 PE=1 SV=1
A=5 C=8 F=2 G=4 K=4 R=6 S=3 W=1 Y=1
Amino acid alphabet = 9
答え1
GNUはこれに()オプションをgrep
提供します:-B
--before-context
grep -F -B2 -x 'Amino acid alphabet = 9' file
このオプションがない場合は、grep
次のものを使用できますawk
。
awk -v RS= '/Amino acid alphabet = 9$/' file
(あなたの例のように、あなたの記録は空行で区切られていると仮定します)