AWK-
Verwendung AWK
- das ist so einfach wie möglich:
awk '/yellow/,0' textfile.txt
Probelauf
$ awk '/yellow/,0' textfile.txt
yellow
red
orange
more orange
more blue
this is enough
Grep
Sie können auch verwenden , grep
mit --after-context
Option, gewisse Linien nach dem Spiel zu drucken
grep 'yellow' --after-context=999999 textfile.txt
Für die automatische Einstellung des Kontexts können Sie verwenden $(wc -l textfile.txt)
. Die Grundidee ist, dass, wenn Sie eine erste Zeile als Übereinstimmung haben und alles nach dieser Übereinstimmung drucken möchten, Sie die Anzahl der Zeilen in der Datei minus 1 kennen müssen. Glücklicherweise --after-context
werden keine Fehler über die Anzahl der Zeilen ausgegeben Zeilen, so dass Sie die Nummer vollständig außerhalb des Bereichs angeben können, aber falls Sie es nicht wissen, reicht die Gesamtzahl der Zeilen aus
$ grep 'yellow' --after-context=$(wc -l < textfile.txt) textfile.txt
yellow
red
orange
more orange
more blue
this is enough
Wenn Sie den Befehl kürzen möchten, --after-context
ist dies die gleiche Option wie -A
und $(wc -l textfile.txt)
, wird auf die Anzahl der Zeilen gefolgt vom Dateinamen erweitert. Auf diese Weise tippen Sie textfile.txt
nur einmal
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')
Oder alternativ ohne printable
Flagge
#!/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
Befehl vereinfachengrep "yellow" -A $(wc -l textfile.txt)
.