Sử dụng AWKAWK
- đó là cách đơn giản nhất có thể nhận được:
awk '/yellow/,0' textfile.txt
Chạy mẫu
$ awk '/yellow/,0' textfile.txt
yellow
red
orange
more orange
more blue
this is enough
Grep
Bạn cũng có thể sử dụng grep
với --after-context
tùy chọn, để in số lượng dòng nhất định sau trận đấu
grep 'yellow' --after-context=999999 textfile.txt
Để tự động thiết lập bối cảnh, bạn có thể sử dụng $(wc -l textfile.txt)
. Ý tưởng cơ bản là nếu bạn có một dòng đầu tiên là một trận đấu và bạn muốn in mọi thứ sau trận đấu đó, bạn sẽ cần biết số dòng trong tệp trừ 1. May mắn thay, --after-context
sẽ không ném lỗi về số lượng các dòng, vì vậy bạn có thể cung cấp cho nó số hoàn toàn ngoài phạm vi, nhưng trong trường hợp bạn không biết nó, tổng số dòng sẽ làm
$ grep 'yellow' --after-context=$(wc -l < textfile.txt) textfile.txt
yellow
red
orange
more orange
more blue
this is enough
Nếu bạn muốn rút ngắn lệnh --after-context
là tùy chọn tương tự -A
và $(wc -l textfile.txt)
, sẽ mở rộng thành số dòng theo sau là tên tệp. Vì vậy, cách bạn gõ textfile.txt
chỉ một lần
grep "yellow" -A $(wc -l textfile.txt)
Con tră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')
Hoặc thay thế mà không có printable
cờ
#!/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
lệnh đểgrep "yellow" -A $(wc -l textfile.txt)
.