Apa cara terbaik untuk mendapatkan hanya kecocokan terakhir dari ekspresi reguler dalam file menggunakan grep?
Juga, mungkinkah untuk mulai menangkap dari akhir file alih-alih dari awal dan berhenti ketika menemukan kecocokan pertama?
Kamu bisa mencoba
grep pattern file | tail -1
atau
tac file | grep pattern | head -1
atau
tac file | grep -m1 pattern
tac file | grep -m 1 pattern
grep -n
) di file aktual, saya pikirtac
cukup banyak yang harus dihindari, kecuali saya ingin melakukan pengurangan denganwc -l
. Kalau tidaktac
dengangrep -m1
banyak artinya.grep
akan berhenti bekerja setelah pertandingan pertama. tanpa-m 1
,grep
pertama-tama akan menemukan semua pola yang cocok dalam file , kemudianhead
hanya akan menunjukkan yang pertama - jauh lebih efisien. Dennis, tolong pertimbangkan untuk memposting ini dalam jawaban yang terpisah!Untuk seseorang yang bekerja dengan file teks besar di Unix / Linux / Mac / Cygwin. Jika Anda menggunakan Windows, periksa ini tentang perangkat Linux di Windows: https://stackoverflow.com/questions/3519738/what-is-the-best-way-to-use-linux-utilities-under-windows .
Seseorang dapat mengikuti alur kerja ini untuk memiliki kinerja yang baik:
zq
dari paket.Kutipan dari github readme:
Membuat indeks
Meminta indeks
sumber
Saya selalu menggunakan kucing (tapi ini membuatnya sedikit lebih lama):
cat file | grep pattern | tail -1
Saya akan menyalahkan guru kursus admin linux saya di kampus yang suka kucing :))))
- Anda tidak harus membuat file cat terlebih dahulu sebelum mengambilnya.
grep pattern file | tail -1
dan lebih efisien juga.sumber
cat
file dan pipa itugrep
. Anda dapatgrep
mencari file langsung melaluigrep pattern file
(dan kemudian gunakantail
untuk mengembalikan hasil terakhir), seperti dalam jawaban Cakemox.