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)
.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 exactamenteyellow
hasta la última línea inclusivep
: imprime las líneas en el rango de direccionesfuente
Tarde a la fiesta :)
Utilizando
grep
:-P
nos permite usar Regex compatible con Perl-z
hace que el archivo de entrada esté separado por ASCII NUL, en lugar de esa nueva línea-o
toma 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
,\n
coincide con una nueva línea,\K
descarta la coincidenciayellow\n.*
coincideyellow
con una nueva línea y todo después de esto también se selecciona y se muestra en la salida.Ejemplo:
Usando poco
python
:lines
es 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 delines
dóndeyellow\n
se encuentralines[lines.index('yellow\n'):]
utilizará el corte de lista para obtener la porción desde el principioyellow\n
hasta el finaljoin
unirá los elementos de la lista para generar como una cadenafuente
yellow
en la línea ... también si ese no es el caso, entonces tenemos que cambiar elpython
algo de uno ...grep
y 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
less
podía hacer eso. Muy agradable !