AWK
Use AWK
- ง่ายที่สุดเท่าที่จะทำได้:
awk '/yellow/,0' textfile.txt
วิ่งตัวอย่าง
$ awk '/yellow/,0' textfile.txt
yellow
red
orange
more orange
more blue
this is enough
grep
คุณสามารถใช้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)