Utilisation d' AWKAWK
- c'est la plus simple possible:
awk '/yellow/,0' textfile.txt
Exemple d'exécution
$ awk '/yellow/,0' textfile.txt
yellow
red
orange
more orange
more blue
this is enough
Grep
Vous pouvez également utiliser grep
avec --after-context
option, pour imprimer une certaine quantité de lignes après la correspondance
grep 'yellow' --after-context=999999 textfile.txt
Pour le réglage automatique du contexte, vous pouvez utiliser $(wc -l textfile.txt)
. L'idée de base est que si vous avez une toute première ligne comme correspondance et que vous souhaitez tout imprimer après cette correspondance, vous devrez connaître le nombre de lignes dans le fichier moins 1. Heureusement, --after-context
ne générera pas d'erreurs sur le nombre de lignes, vous pouvez donc lui donner un numéro complètement hors de portée, mais si vous ne le connaissez pas, le nombre total de lignes fera l'affaire
$ grep 'yellow' --after-context=$(wc -l < textfile.txt) textfile.txt
yellow
red
orange
more orange
more blue
this is enough
Si vous souhaitez raccourcir la commande, --after-context
c'est la même option que -A
et $(wc -l textfile.txt)
, s'étendra au nombre de lignes suivi du nom du fichier. Ainsi, vous textfile.txt
ne tapez qu'une seule fois
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 bien sans printable
drapeau
#!/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
commande engrep "yellow" -A $(wc -l textfile.txt)
.