Penggunaan AWKAWK
- itu yang paling sederhana karena dapat diperoleh:
awk '/yellow/,0' textfile.txt
Contoh dijalankan
$ awk '/yellow/,0' textfile.txt
yellow
red
orange
more orange
more blue
this is enough
Grep
Anda juga bisa menggunakan grep
dengan --after-context
pilihan, untuk mencetak sejumlah baris setelah pertandingan
grep 'yellow' --after-context=999999 textfile.txt
Untuk pengaturan konteks otomatis, Anda dapat menggunakan $(wc -l textfile.txt)
. Ide dasarnya adalah bahwa jika Anda memiliki baris pertama sebagai pasangan dan Anda ingin mencetak semuanya setelah pertandingan itu, Anda perlu mengetahui jumlah baris dalam file minus 1. Untungnya, --after-context
tidak akan melempar kesalahan tentang jumlah baris, sehingga Anda bisa memberikan nomor itu sepenuhnya di luar jangkauan, tetapi jika Anda tidak mengetahuinya, jumlah total garis akan dilakukan
$ grep 'yellow' --after-context=$(wc -l < textfile.txt) textfile.txt
yellow
red
orange
more orange
more blue
this is enough
Jika Anda ingin mempersingkat perintah --after-context
adalah opsi yang sama dengan -A
dan $(wc -l textfile.txt)
, akan diperluas ke sejumlah baris diikuti dengan nama file. Jadi dengan begitu Anda mengetik textfile.txt
hanya sekali
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')
Atau sebagai alternatif tanpa printable
bendera
#!/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()
Sergiy Kolodyazhnyy
sumber
grep
perintahgrep "yellow" -A $(wc -l textfile.txt)
.grep "yellow" -A $(wc -l < "my colors.txt") "my colors.txt"
.Anda dapat melakukannya dengan:
di mana "file" adalah nama file yang berisi teks Anda.
sumber
Tidak
grep
, tetapi menggunakansed
:-n
: menghambat pencetakan/^yellow$/,$
: rentang alamat yang berawal dari kemunculan pertama baris yang cocok persisyellow
dengan baris terakhir inklusifp
: mencetak garis dalam kisaran alamatsumber
Terlambat ke pesta :)
Menggunakan
grep
:-P
memungkinkan kita menggunakan Regex yang kompatibel dengan Perl-z
membuat file input dipisahkan oleh ASCII NUL, bukan baris baru itu-o
hanya mengambil porsi yang diinginkan(?s)
adalah pengubah DOTALL, memungkinkan kami untuk mencocokkan baris baru menggunakan token.
(karakter apa saja)Di
\n\K
, cocokkan dengan\n
baris baru,\K
buang yang cocokyellow\n.*
pertandinganyellow
diikuti oleh baris baru dan semuanya setelah ini dipilih juga dan ditampilkan di output.Contoh:
Menggunakan sedikit
python
:lines
adalah daftar yang berisi semua baris file (dengan membuntuti baris baru juga)lines.index('yellow\n')
memberi kami indeks terendah dilines
manayellow\n
ditemukanlines[lines.index('yellow\n'):]
akan menggunakan daftar slicing untuk mendapatkan porsi mulai dariyellow\n
sampai akhirjoin
akan bergabung dengan elemen-elemen dari daftar untuk menghasilkan sebagai stringsumber
yellow
dalam garis .. juga jika itu tidak terjadi maka kita perlu mengubahpython
algo seseorang ..grep
dan tidak hanya cocok dengan baris penuh. Saya memilih btw.Karena pertanyaan mengacu pada melihat file, selalu ada yang baik
sumber
less
bisa melakukan itu. Sangat bagus !