sed -n '/foo/,/goo/p;/goo/q' <bigfile
Isso imprimiria apenas essas linhas. Se você quisesse os números de linha, você adicionaria um =
.
sed -n '/foo/=;/goo/=;//q' <bigfile
O q
é importante porque q
uits a entrada quando é chamada - else sed
continuará a ler o arquivo até o final.
Se você não quiser imprimir foo/goo
linhas, poderá fazer isso:
Com o GNU sed
:
sed -n '/foo/,/goo/!d;//!p;/goo/q
' <<\DATA
line1
foo
line3
line4
line5
goo
line7
DATA
OUTPUT
line3
line4
line5
E com qualquer outro:
sed -n '/foo/G;/\n/,/goo/!d;//q;/\n/!p
' <<\DATA
line1
foo
line3
line4
line5
goo
line7
DATA
OUTPUT
line3
line4
line5
De qualquer forma, no entanto, isso também sai da entrada assim que encontra a última linha da pesquisa.