Використання AWKAWK
- це найпростіше, як це можна отримати:
awk '/yellow/,0' textfile.txt
Вибірка зразка
$ awk '/yellow/,0' textfile.txt
yellow
red
orange
more orange
more blue
this is enough
Греп
Крім того, можна використовувати grep
з --after-context
опцією, щоб надрукувати певну кількість рядків після матчу
grep 'yellow' --after-context=999999 textfile.txt
Для автоматичного встановлення контексту ви можете використовувати $(wc -l textfile.txt)
. Основна ідея полягає в тому, що якщо у вас є такий самий перший рядок як збіг, і ви хочете надрукувати все після цього матчу, вам потрібно буде знати кількість рядків у файлі мінус 1. На щастя, --after-context
помилок щодо кількості рядків, так що ви можете дати йому номер повністю поза діапазону, але якщо ви цього не знаєте, загальна кількість рядків зробить це
$ grep 'yellow' --after-context=$(wc -l < textfile.txt) textfile.txt
yellow
red
orange
more orange
more blue
this is enough
Якщо ви хочете скоротити команду, --after-context
це та сама опція, що -A
і $(wc -l textfile.txt)
, буде розгорнута до кількості рядків з наступним іменем файлу. Таким чином, ви вводите textfile.txt
лише один раз
grep "yellow" -A $(wc -l textfile.txt)
Пітон
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')
Або ж без printable
прапора
#!/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
команду доgrep "yellow" -A $(wc -l textfile.txt)
.