Saya ingin melakukan pencarian regex sederhana secara rekursif melalui direktori yang tidak terbatas pada satu baris.
Saya mencoba grep dan ack, tetapi tampaknya tidak ada yang mendukung ini.
Saya tahu ini seharusnya tidak terlalu mahal secara komputasi (dalam kasus saya) karena editor teks pilihan saya ( Sublime Text ) dapat melakukannya dengan baik.
Saya hanya mencari versi baris perintah sederhana ini. Google telah mengaktifkan pcregrep , tetapi sepertinya saya tidak dapat menemukannya untuk Mac. Apakah saya hanya tidak mencari di tempat yang tepat?
grep
dengan konteks membantu Anda menemukan yang Anda inginkan (-C1
)?Jawaban:
Instal Homebrew lalu:
Ini akan memberi Anda yang terbaru
pcregrep
sumber
Anda tidak mengatakan dengan tepat apa yang Anda cari, jadi saya akan membayangkan tugas untuk mencari tahu apakah file tersebut berisi 112 diikuti oleh 223, mengabaikan baris baru.
Solusi yang sedikit dibuat-buat
awk
:The
RS
variabel berisi pemisah record. Dengan mengaturnya ke string kosong, seluruh file akan dibaca sebagai satu catatan.Ini mungkin akan sangat tidak efisien memori pada file besar.
Ngomong-ngomong, saya melakukan ini di OpenBSD, tetapi OS X awk harus bekerja dengan cara yang sama.
sumber
v
danRS
. yaituawk -v RS='' '/112.*223/ { print "found it"; exit }' file.in
"pcregrep" dapat merujuk ke kandang yang lebih tua
pcregrep
dan yang lebih barupcre2grep
. Keduanya disediakan oleh proyek PCRE dipcre.org
.Port Mac menyediakan yang pertama sebagai bagian dari port
pcre
(stabil pada versi 8.40), dan yang terakhir sebagai bagian dari portpcre2
(saat ini versi 10.22). Instal melalui:sumber