2014-08-31 76 views
1

我想輸出> contig_18,後面的文本行,並在> contig_19之前停止。在兩個特定字符串之間輸出n行文本

我不明白如何在> contig_18之後grep多行文本而不給出確切的換行符數。

例如:注意contigs之間通常會有超過1000行的文本。

>contig_18 
GCACAGACGGCCGACTTTAGAGAATCTGAGTTTGGAGCGCTGCCGGT 
GAATCCAGATGACTTAACCGGCCACGTCTCCCTATGACCTGCATTTT 
GAAAGAGATCTGCTTCAGATGCGATCTCCATTAGGATATCAACTTGG 
CCGATCGCATCGTCGAGAGCGGAGACACGGCAGCCAACCTTCTTGAG 
AGTCCTTTTCAGCTCGCGAAGGGCTTCAAGTACTTCCGGAGAGAACG 
GGTCGACAAGTGGATCAGGCAAAGTTGCGATTTCCACGCGTGTCGAT 
TCTGACTCGCTCATTTGATCCCCCGTGGCATTCTGCGCGGGTTGGAG 
>contig_19 

謝謝!

回答

1

如果你真的想使用grep,你可以這樣做:

grep -A 9999 "^>contig_18" file | grep -B 9999 "^>contig_19" 

,說找到了9999條線下contig_18,並從那些發現在contig_19之前最多可以有9,999行。

1

如果你的系統有awk,你可以這樣做:用>contig_19


awk '/^>contig_18/ {f=1} f; /^>contig_19/ {f=0}' file 

它會變得開始>contig_18從線的所有數據和包容性的線你也可以使用這個,但我喜歡第一個更好,因爲它更定製:

awk '/^>contig_18/,/^>contig_19/' file 

或者你可以使用sed

sed -n '/^>contig_18/,/^>contig_19/p' file 
+0

+1比我的更優雅! – 2014-08-31 20:22:07

相關問題