以下のテキストファイルがあります(ここでは数行が表示されます)。
INDEX : 1
snRNA_seq:TTTTGGAGCAGGGAGATGGAAT
miRNA_seq:CTCCTGACTCCAGGTCCTGTGT
target: RNU2-1,RNU2-64P,RNU2-37P,RNU2-61P,RNU2-68P,RNU2-26P,RNU2-57P,RNU2-59P
length: 22
miRNA: hsa-miR-378a-5p*MI0000786
length: 22
mfe: -21.3 kcal/mol
p-value: 0.015469
position 1
target 5' U A 3'
UUUGGAG CAGGG
GGACCUC GUCCU
miRNA 3' UGUGUCCU A C 5'
INDEX : 10
snRNA_seq:TTGGAGCAGGGAGATGGAAT
miRNA_seq:ATCCTCTCTTCCCTCCTCCCAG
target: RNU2-1,RNU2-64P,RNU2-37P,RNU2-61P,RNU2-68P,RNU2-26P,RNU2-57P,RNU2-59P
length: 20
miRNA: hsa-miR-7111-3p*MI0022962
length: 22
mfe: -24.0 kcal/mol
p-value: 0.001695
position 2
target 5' U C U A 3'
GGAG AGGG AGA GGA
CCUC UCCC UCU CCU
miRNA 3' GAC C U CU A 5'
1、10、20、30などの識別子のリストがあります。上記のファイルのこの識別子はINDEXセクションの横にあります。私がしたいのは、識別子が上記のファイルと一致する場合は、その行+デフォルトでgrep -A 28 "INDEX :identifier"である次の28行を印刷することです。
シェルでこれをどのように実行できますか?
挨拶
ベストアンサー1
目的の識別子の固定項目がある場合は、次のものを使用できます。
for identifier in 1 10 20 30; do
grep -A 28 "INDEX : ${identifier}$" Test.txt
done
固定識別子がない場合は、識別子を指定せずにgrepを実行できます。
grep -A 28 "^INDEX : " Test.txt
^
ここでは、行の先頭に一致するINDEX行を使用します。