Uso de AWKAWK
: es lo más simple posible:
awk '/yellow/,0' textfile.txt
Ejecución de la muestra
$ awk '/yellow/,0' textfile.txt
yellow
red
orange
more orange
more blue
this is enough
Grep
También puede usar grep
con la --after-context
opción, para imprimir cierta cantidad de líneas después del partido
grep 'yellow' --after-context=999999 textfile.txt
Para la configuración automática de contexto, puede usar $(wc -l textfile.txt)
. La idea básica es que si tiene una primera línea como coincidencia y desea imprimir todo después de esa coincidencia, necesitará saber la cantidad de líneas en el archivo menos 1. Afortunadamente, --after-context
no arrojará errores sobre la cantidad de líneas, por lo que podría darle un número completamente fuera de rango, pero en caso de que no lo sepa, el número total de líneas funcionará
$ grep 'yellow' --after-context=$(wc -l < textfile.txt) textfile.txt
yellow
red
orange
more orange
more blue
this is enough
Si desea acortar, el comando --after-context
es la misma opción que -A
y $(wc -l textfile.txt)
, se expandirá al número de líneas seguido del nombre del archivo. Así de esa manera escribes textfile.txt
solo una vez
grep "yellow" -A $(wc -l textfile.txt)
Pitón
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')
O alternativamente sin printable
bandera
#!/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()
grep
comando agrep "yellow" -A $(wc -l textfile.txt)
.