GREP在两个特定字符串之间输出n行文本

时间:2014-08-31 18:38:14

标签: grep

我想要点击> contig_18,跟随它的文本行,然后在> contig_19之前停止。

我不明白如何在> contig_18之后grep多行文本而不给出确切的换行符数。

例如:请注意,重叠群之间通常会有1000多行文字。

>contig_18
GCACAGACGGCCGACTTTAGAGAATCTGAGTTTGGAGCGCTGCCGGT
GAATCCAGATGACTTAACCGGCCACGTCTCCCTATGACCTGCATTTT
GAAAGAGATCTGCTTCAGATGCGATCTCCATTAGGATATCAACTTGG
CCGATCGCATCGTCGAGAGCGGAGACACGGCAGCCAACCTTCTTGAG
AGTCCTTTTCAGCTCGCGAAGGGCTTCAAGTACTTCCGGAGAGAACG
GGTCGACAAGTGGATCAGGCAAAGTTGCGATTTCCACGCGTGTCGAT
TCTGACTCGCTCATTTGATCCCCCGTGGCATTCTGCGCGGGTTGGAG
>contig_19

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您的系统中有awk,则可以执行以下操作:

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

它将从>contig_18开始的所有数据到包含>contig_19的包含行


你也可以使用它,但我更喜欢第一个,因为它更具定制性:

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

或者您可以使用sed

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

答案 1 :(得分:1)

如果您真的想使用grep,可以这样做:

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

这表示在contig_18之后找到最多9,999行,并且从contig_19之前找到最多9,999行。