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 grepcon la --after-contextopció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-contextno 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-contextes la misma opción que -Ay $(wc -l textfile.txt), se expandirá al número de líneas seguido del nombre del archivo. Así de esa manera escribes textfile.txtsolo 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 printablebandera
#!/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()
grepcomando agrep "yellow" -A $(wc -l textfile.txt).grep "yellow" -A $(wc -l < "my colors.txt") "my colors.txt".Puedes hacerlo por:
donde "archivo" es el nombre del archivo que contiene su texto.
fuente
No
grep, pero usandosed:-n: inhibe la impresión/^yellow$/,$: rango de direcciones que va desde la primera aparición de una línea que coincide exactamenteyellowhasta la última línea inclusivep: imprime las líneas en el rango de direccionesfuente
Tarde a la fiesta :)
Utilizando
grep:-Pnos permite usar Regex compatible con Perl-zhace que el archivo de entrada esté separado por ASCII NUL, en lugar de esa nueva línea-otoma solo la porción deseada(?s)es el modificador DOTALL, nos permite hacer coincidir la nueva línea utilizando token.(cualquier carácter)En
\n\K,\ncoincide con una nueva línea,\Kdescarta la coincidenciayellow\n.*coincideyellowcon una nueva línea y todo después de esto también se selecciona y se muestra en la salida.Ejemplo:
Usando poco
python:lineses la lista que contiene todas las líneas del archivo (con líneas nuevas también)lines.index('yellow\n')nos da el índice más bajo delinesdóndeyellow\nse encuentralines[lines.index('yellow\n'):]utilizará el corte de lista para obtener la porción desde el principioyellow\nhasta el finaljoinunirá los elementos de la lista para generar como una cadenafuente
yellowen la línea ... también si ese no es el caso, entonces tenemos que cambiar elpythonalgo de uno ...grepy no coincide solo con líneas completas. Voté por cierto.Dado que la pregunta se refiere a ver el archivo, siempre existe el buen ol '
fuente
lesspodía hacer eso. Muy agradable !