AWK
Use AWK
: è il più semplice in quanto può ottenere:
awk '/yellow/,0' textfile.txt
Esecuzione del campione
$ awk '/yellow/,0' textfile.txt
yellow
red
orange
more orange
more blue
this is enough
grep
Puoi anche usare grep
con l' --after-context
opzione, per stampare un certo numero di righe dopo la partita
grep 'yellow' --after-context=999999 textfile.txt
Per l'impostazione automatica del contesto, è possibile utilizzare $(wc -l textfile.txt)
. L'idea di base è che se si dispone di una prima riga come corrispondenza e si desidera stampare tutto dopo quella corrispondenza, è necessario conoscere il numero di righe nel file meno 1. Fortunatamente, --after-context
non verranno generati errori sul numero di linee, quindi potresti dargli un numero completamente al di fuori dell'intervallo, ma nel caso non lo sapessi, lo farà il numero totale di linee
$ grep 'yellow' --after-context=$(wc -l < textfile.txt) textfile.txt
yellow
red
orange
more orange
more blue
this is enough
Se si desidera abbreviare il comando --after-context
è la stessa opzione di -A
e $(wc -l textfile.txt)
, si espanderà al numero di righe seguito dal nome del file. In questo modo digiti textfile.txt
una sola volta
grep "yellow" -A $(wc -l textfile.txt)
Pitone
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 in alternativa senza printable
bandiera
#!/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)
.