AWK
Use AWK
- é o mais simples possível:
awk '/yellow/,0' textfile.txt
Execução de amostra
$ awk '/yellow/,0' textfile.txt
yellow
red
orange
more orange
more blue
this is enough
Grep
Você também pode usar a opção grep
with --after-context
para imprimir determinada quantidade de linhas após a correspondência
grep 'yellow' --after-context=999999 textfile.txt
Para configuração automática de contexto, você pode usar $(wc -l textfile.txt)
. A idéia básica é que, se você tiver uma primeira linha como uma correspondência e quiser imprimir tudo depois dessa partida, precisará saber o número de linhas no arquivo menos 1. Felizmente, --after-context
não emitirá erros sobre o número de linhas, então você pode dar um número completamente fora do intervalo, mas caso você não saiba, o número total de linhas será
$ grep 'yellow' --after-context=$(wc -l < textfile.txt) textfile.txt
yellow
red
orange
more orange
more blue
this is enough
Se você quiser encurtar o comando --after-context
é a mesma opção que -A
e $(wc -l textfile.txt)
, expandirá para o número de linhas seguidas pelo nome do arquivo. Dessa forma, você digita textfile.txt
somente uma vez
grep "yellow" -A $(wc -l textfile.txt)
Python
skolodya@ubuntu:$ ./printAfter.py textfile.txt
yellow
red
orange
more orange
more blue
this is enough
DIR:/xieerqi
skolodya@ubuntu:$ cat ./printAfter.py
#!/usr/bin/env python
import sys
printable=False
with open(sys.argv[1]) as f:
for line in f:
if "yellow" in line:
printable=True
if printable:
print line.rstrip('\n')
Ou alternativamente sem printable
flag
#!/usr/bin/env python
import sys
with open(sys.argv[1]) as f:
for line in f:
if "yellow" in line:
for lines in f: # will print remaining lines
print lines.rstrip('\n')
exit()