[ BACA | Panduan Pengguna | Pengindeksan | Tolok Ukur | Tanya Jawab ]
opsi -Q membuka kueri TUI untuk mencari file saat Anda mengetik!
ugrep cepat, mudah digunakan, dan dilengkapi dengan banyak fitur baru yang diinginkan pengguna
mencakup TUI interaktif dengan bantuan bawaan, pencarian seperti Google dengan pola AND/OR/NOT, pencarian fuzzy, pencarian (bersarang) arsip zip/7z/tar/pax/cpio, tarball dan file terkompresi gz/Z/bz/ bz2/lzma/xz/lz4/zstd/brotli, mencari dan file biner hexdump, mencari dokumen seperti PDF, doc, docx, dan output dalam JSON, XML, CSV atau format khusus Anda sendiri
Sintaks pola regex yang diperluas Unicode dengan pencocokan pola multi-baris tanpa memerlukan opsi baris perintah khusus
termasuk pengindeks file untuk mempercepat pencarian sistem file yang lambat dan dingin
pengganti drop-in yang sebenarnya untuk GNU grep (dengan asumsi Anda menyalin atau menghubungkan ug
ke grep
, dan ke egrep
dan ke fgrep
), tidak seperti grep populer lainnya yang mengklaim sebagai "alternatif grep" atau "pengganti" ketika mereka benar-benar mengimplementasikan baris perintah yang tidak kompatibel opsi dan gunakan pencocokan regex yang tidak kompatibel, yaitu hanya regex Perl versus POSIX BRE (grep) dan ERE (egrep) ketika ugrep mendukung semua mode regex
tolok ukur menunjukkan bahwa ugrep adalah (salah satu) grep tercepat yang menggunakan pencocokan regex berbasis DFA berkinerja tinggi RE/flex
jika ada sesuatu yang perlu diperbaiki atau ditambahkan ke ugrep, beri tahu saya!
Prioritas #1 adalah jaminan kualitas untuk terus memastikan ugrep tidak memiliki bug dan dapat diandalkan
membuat ugrep berjalan lebih cepat, lihat misalnya #432, #421
berbagi hasil kinerja yang dapat direproduksi
ug
untuk penggunaan interaktif, yang memuat file konfigurasi .ugrep opsional dengan preferensi Anda yang terletak di direktori kerja atau direktori home, ug+
juga mencari pdf, dokumen, e-book, metadata gambar
ugrep
untuk penggunaan batch seperti GNU grep tanpa file konfigurasi .ugrep, ugrep+
juga mencari pdf, dokumen, e-book, metadata gambar
Cocok dengan pola Unicode secara default dan secara otomatis mencari file yang dikodekan UTF-8, UTF-16 dan UTF-32
Mencocokkan beberapa baris dengan n
atau R
dalam pola regex, tidak diperlukan opsi khusus untuk melakukannya!
Bantuan bawaan: ug --help
, di mana ug --help WHAT
menampilkan opsi yang terkait dengan WHAT
yang Anda cari
ug --help regex
, ug --help globs
, ug --help fuzzy
, ug --help format
.
Ramah pengguna dengan file konfigurasi yang dapat disesuaikan yang digunakan oleh perintah ug
yang ditujukan untuk penggunaan interaktif yang memuat file konfigurasi .ugrep dengan preferensi Anda
ug PATTERN ... ugrep --config PATTERN ...
ug --save-config ...options-you-want-to-save...
menyimpan file konfigurasi .ugrep di direktori kerja sehingga saat berikutnya Anda menjalankan ug
di sana, ia akan menggunakan opsi ini. Lakukan ini di direktori home Anda untuk menyimpan file konfigurasi .ugrep dengan opsi yang biasanya ingin Anda gunakan.
Permintaan interaktif TUI, tekan F1 atau CTRL-Z untuk bantuan dan TAB/SHIFT-TAB untuk menavigasi ke direktori dan file
ug -Q ug -Q -e PATTERN
-Q
menggantikan PATTERN
pada baris perintah untuk memungkinkan Anda memasukkan pola secara interaktif di TUI. Di TUI gunakan tombol ALT+huruf untuk mengaktifkan/menonaktifkan "opsi huruf" pendek, misalnya ALT-n (opsi -n
) untuk menampilkan/menyembunyikan nomor baris.
Cari isi arsip (zip, tar, pax, jar, cpio, 7z) dan file terkompresi (gz, Z, bz, bz2, lzma, xz, lz4, zstd, brotli)
ug -z PATTERN ... ug -z --zmax=2 PATTERN ...
tentukan -z --zmax=2
untuk mencari file terkompresi dan arsip yang bersarang di dalam arsip. Argumen --zmax
dapat berkisar dari 1 (default) hingga 99 untuk hingga 99 langkah dekompresi dan de-arsip untuk mencari arsip yang disarangkan
Telusuri dengan pola kueri Boolean seperti Google menggunakan pola -%
dengan AND
(atau hanya spasi), OR
(atau bilah |
), NOT
(atau tanda hubung -
), menggunakan tanda kutip agar sama persis, dan mengelompokkan dengan ( )
(ditunjukkan pada sisi kiri bawah); atau dengan opsi -e
(sebagai "atau"), --and
, --andnot
, dan --not
pola regex (ditampilkan di sisi kanan bawah):
ug -% 'A B C' ... ug -e 'A' --and 'B' --and 'C' ...
ug -% 'A|B C' ... ug -e 'A' -e 'B' --and 'C' ...
ug -% 'A -B -C' ... ug -e 'A' --andnot 'B' --andnot 'C' ...
ug -% 'A -(B|C)'... ug -e 'A' --andnot 'B' --andnot 'C' ...
ug -% '"abc" "def"' ... ug -e 'QabcE' --and 'QdefE' ...
di mana A
, B
dan C
adalah pola regex arbitrer (gunakan opsi -F
untuk mencari string)
tentukan opsi -%%
( --bool --files
) untuk menerapkan kueri Boolean ke file secara keseluruhan: file cocok jika semua kondisi Boolean dipenuhi dengan pola pencocokan di seluruh file. Jika tidak, kondisi Boolean berlaku untuk satu baris secara default, karena utilitas grep umumnya merupakan pencocokan pola berbasis garis. Opsi --stats
menampilkan kueri dalam bentuk yang dapat dibaca manusia setelah pencarian selesai.
Telusuri pdf, doc, docx, e-book, dan lainnya dengan ug+
menggunakan filter yang terkait dengan ekstensi nama file:
ug+ PATTERN ...
atau tentukan --filter
dengan jenis file untuk menggunakan utilitas filter:
ug --filter='pdf:pdftotext % -' PATTERN ...
ug --filter='doc:antiword %' PATTERN ...
ug --filter='odt,docx,epub,rtf:pandoc --wrap=preserve -t plain % -o -' PATTERN ...
ug --filter='odt,doc,docx,rtf,xls,xlsx,ppt,pptx:soffice --headless --cat %' PATTERN ...
ug --filter='pem:openssl x509 -text,cer,crt,der:openssl x509 -text -inform der' PATTERN ...
ug --filter='latin1:iconv -f LATIN1 -t UTF-8' PATTERN ...
perintah ug+
sama dengan perintah ug
, tetapi juga menggunakan filter untuk mencari PDF, dokumen, dan metadata gambar
Tampilkan konteks horizontal dengan opsi -o
( --only-matching
) dan opsi konteks -ABC
, misalnya untuk menemukan kecocokan dalam baris yang sangat panjang, seperti sumber Javascript dan JSON:
ug -o -C20 -nk PATTERN longlines.js
-o -C20
cocok dengan semua kecocokan dengan konteks dalam 20 karakter sebelum dan 20 karakter setelah kecocokan (yaitu total 40 karakter Unicode), -nk
menampilkan nomor baris dan kolom.
Temukan perkiraan pola yang cocok dengan pencarian fuzzy, dalam jarak Levenshtein yang ditentukan
ug -Z PATTERN ... ug -Z3 PATTTERN ...
-Zn
cocok dengan hingga n
karakter tambahan, hilang atau diganti, -Z+n
cocok dengan hingga n
karakter tambahan, -Zn
cocok dengan hingga n
karakter hilang dan -Z~n
cocok dengan hingga n
karakter yang diganti. -Z
defaultnya adalah -Z1
.
Pencarian seperti Fzf dengan regex (atau string tetap dengan -F
), pencocokan fuzzy dengan hingga 4 karakter tambahan dengan -Z+4
dan kata-kata hanya dengan -w
, menggunakan -%%
untuk pencarian Boolean seluruh file
ug -Q -%% -l -w -Z+4 --sort=best
-l
mencantumkan file yang cocok di TUI, tekan TAB
lalu ALT-y
untuk melihat file, SHIFT-TAB
dan Alt-l
untuk kembali melihat daftar file yang cocok diurutkan berdasarkan kecocokan terbaik
Cari file biner dan tampilkan hexdump dengan pola biner yang cocok (teks Unicode atau -U
untuk pola byte)
ug --hexdump -U BYTEPATTERN ... ug --hexdump TEXTPATTERN ...
ug -X -U BYTEPATTERN ... ug -X TEXTPATTERN ...
ug -W -U BYTEPATTERN ... ug -W TEXTPATTERN ...
--hexdump=4chC1
menampilkan 4
kolom hex tanpa kolom karakter c
, tanpa spasi hex h
, dan dengan satu baris hex tambahan C1
sebelum dan sesudah kecocokan.
Sertakan file untuk dicari berdasarkan jenis file atau file "byte ajaib" atau kecualikan dengan ^
ug -t TYPE PATTERN ... ug -t ^TYPE PATTERN ...
ug -M 'MAGIC' PATTERN ... ug -M '^MAGIC' PATTERN ...
Sertakan file dan direktori untuk mencari yang cocok dengan gumpalan gaya gitignore atau kecualikan dengan ^
ug -g 'FILEGLOB' PATTERN ... ug -g '^FILEGLOB' PATTERN ...
ug -g 'DIRGLOB/' PATTERN ... ug -g '^DIRGLOB/' PATTERN ...
ug -g 'PATH/FILEGLOB' PATTERN ... ug -g '^PATH/FILEGLOB' PATTERN ...
ug -g 'PATH/DIRGLOB/' PATTERN ... ug -g '^PATH/DIRGLOB/' PATTERN ...
Sertakan file untuk dicari berdasarkan ekstensi nama file (akhiran) atau kecualikan dengan ^
, singkatan dari -g"*.EXT"
ug -O EXT PATTERN ... ug -O ^EXT PATTERN ...
Sertakan file tersembunyi (dotfiles) dan direktori untuk dicari (dihilangkan secara default)
ug -. PATTERN ... ug -g'.*,.*/' PATTERN ...
tentukan hidden
di .ugrep Anda untuk selalu mencari file tersembunyi dengan ug
.
Kecualikan file yang ditentukan oleh .gitignore dll.
ug --ignore-files PATTERN ... ug --ignore-files=.ignore PATTERN ...
tentukan ignore-files
di .ugrep Anda untuk selalu mengabaikannya dengan ug
. Tambahkan ignore-files=...
sesuai keinginan.
Pola pencarian tidak termasuk pola negatif ("cocok dengan ini tetapi tidak itu")
ug -e PATTERN -N NOTPATTERN ... ug -e '[0-9]+' -N 123 ...
Gunakan pola regex yang telah ditentukan sebelumnya untuk mencari kode sumber, javascript, XML, JSON, HTML, PHP, penurunan harga, dll.
ug PATTERN -f c++/zap_comments -f c++/zap_strings ...
ug PATTERN -f php/zap_html ...
ug -f js/functions ... | ug PATTERN ...
Urutkan file yang cocok berdasarkan nama, kecocokan terbaik, ukuran, dan waktu
ug --sort PATTERN ... ug --sort=size PATTERN ...
ug --sort=changed PATTERN ... ug --sort=created PATTERN ...
ug -Z --sort=best PATTERN ... ug --no-sort PATTERN ...
Hasil keluaran dalam format CSV, JSON, XML, dan yang ditentukan pengguna
ug --csv PATTERN ... ug --json PATTERN ...
ug --xml PATTERN ... ug --format='file=%f line=%n match=%O%~' PATTERN ...
ug --help format
menampilkan bantuan pada bidang format %
untuk keluaran yang disesuaikan.
Cari dengan pola regex yang kompatibel dengan Perl PCRE dan tampilkan atau ganti subpola yang cocok
ug -P PATTERN ... ug -P --format='%1 and %2%~' 'PATTERN(SUB1)(SUB2)' ...
Ganti pola dalam output dengan -P dan --replace teks pengganti, yang secara opsional berisi %
bidang pemformatan, gunakan -y
untuk meneruskan sisa file melalui:
ug --replace='TEXT' PATTERN ... ug -y --replace='TEXT' PATTERN ...
ug --replace='(%m:%o)' PATTERN ... ug -y --replace='(%m:%o)' PATTERN ...
ug -P --replace='%1' PATTERN ... ug -y -P --replace='%1' PATTERN ...
ug --help format
menampilkan bantuan pada bidang format %
untuk digunakan secara opsional dengan --replace
.
Cari file dengan format pengkodean tertentu seperti ISO-8859-1 hingga 16, CP 437, CP 850, MACROMAN, KOI8, dll.
ug --encoding=LATIN1 PATTERN ...
Instal ugrep terbaru dengan Homebrew:
$ brew install ugrep
atau instal dengan MacPorts:
$ sudo port install ugrep
Ini menginstal perintah ugrep
dan ug
, di mana ug
sama dengan ugrep
tetapi juga memuat file konfigurasi .ugrep ketika ada di direktori kerja atau direktori home.
Instal dengan Winget winget install Genivia.ugrep
Atau instal dengan Chocolatey choco install ugrep
Atau instal dengan Scoop scoop install ugrep
Atau unduh ugrep.exe
berfitur lengkap yang dapat dieksekusi sebagai artefak rilis dari https://github.com/Genivia/ugrep/releases. Rilis zip berisi biner ugrep.exe
utama serta ug.exe
. Perintah ug
, dimaksudkan untuk penggunaan interaktif, memuat dan membaca pengaturan dari file konfigurasi .ugrep
(bila ada di direktori kerja atau direktori home).
Tambahkan ugrep.exe
dan ug.exe
ke jalur eksekusi Anda: buka Pengaturan dan cari "Jalur" di Temukan Pengaturan . Pilih variabel lingkungan -> Jalur -> Baru dan tambahkan direktori tempat Anda meletakkan file executable ugrep.exe
dan ug.exe
.
Tip
Petunjuk praktis tentang penggunaan ugrep.exe
dan ug.exe
pada baris perintah Windows:
'
tetapi gunakan "
sebagai gantinya; sebagian besar utilitas perintah Windows menganggap tanda kutip '
sebagai bagian dari argumen baris perintah!-g/GLOB
daripada argumen baris perintah GLOB
biasa untuk memilih file dan direktori yang akan dicari, terutama untuk pencarian rekursif;""
untuk mencocokkan semua masukan, ini mungkin diabaikan oleh beberapa penerjemah perintah Windows seperti Powershell, dalam hal ini Anda harus menentukan opsi --match
sebagai gantinya;R
alih-alih n
untuk mencocokkan baris baru Unicode apa pun, seperti rn
berpasangan dan r
dan n
tunggal. $ apk add ugrep ugrep-doc
Periksa https://pkgs.alpinelinux.org/packages?name=ugrep untuk info versi.
$ pacman -S ugrep
Periksa https://archlinux.org/packages/extra/x86_64/ugrep untuk info versi.
Pertama aktifkan repositori EPEL, lalu Anda dapat menginstal ugrep.
$ dnf install ugrep
Periksa https://packages.fedoraproject.org/pkgs/ugrep/ugrep/ untuk info versi.
$ apt-get install ugrep
Periksa https://packages.debian.org/ugrep untuk info versi. Untuk membangun dan mencoba ugrep
secara lokal, lihat langkah-langkah pembuatan "Semua platform" lebih lanjut di bawah.
$ dnf install ugrep
Periksa https://packages.fedoraproject.org/pkgs/ugrep/ugrep/ untuk info versi.
$ pkg install ugrep
Periksa https://www.freshports.org/textproc/ugrep untuk info versi.
$ pkgman install cmd:ugrep
Periksa https://github.com/haikuports/haikuports/tree/master/app-text/ugrep untuk info versi. Untuk membangun dan mencoba ugrep
secara lokal, lihat langkah-langkah pembuatan "Semua platform" lebih lanjut di bawah.
Anda dapat menggunakan penginstal paket NetBSD standar (pkgsrc): http://cdn.netbsd.org/pub/pkgsrc/current/pkgsrc/textproc/ugrep/README.html
$ pkg_add ugrep
Periksa https://openports.pl/path/sysutils/ugrep untuk info versi.
$ zypper install ugrep
Periksa https://build.opensuse.org/package/show/utilities/ugrep untuk info versi.
Pertama aktifkan repositori EPEL, lalu Anda dapat menginstal ugrep.
$ dnf install ugrep
Periksa https://packages.fedoraproject.org/pkgs/ugrep/ugrep/ untuk info versi.
Klon ugrep
dengan
$ git clone https://github.com/Genivia/ugrep
Atau kunjungi https://github.com/Genivia/ugrep/releases untuk mengunduh rilis tertentu.
Anda selalu dapat menambahkannya nanti, saat Anda memerlukan fitur berikut:
Opsi -P
(ekspresi reguler Perl) memerlukan perpustakaan PCRE2 (disarankan) atau perpustakaan Boost.Regex (fallback opsional). Jika PCRE2 belum diinstal, instal PCRE2 dengan misalnya sudo apt-get install -y libpcre2-dev
atau unduh PCRE2 dan ikuti petunjuk instalasi. Alternatifnya, unduh Boost.Regex dan jalankan ./bootstrap.sh
dan sudo ./b2 --with-regex install
. Lihat Peningkatan: memulai.
Opsi -z
(pencarian file dan arsip terkompresi) memerlukan perpustakaan zlib yang diinstal. Itu diinstal pada sebagian besar sistem. Jika belum, instal, misalnya dengan sudo apt-get install -y libz-dev
. Untuk mencari file .bz
dan .bz2
, instal perpustakaan bzip2 (disarankan), misalnya dengan sudo apt-get install -y libbz2-dev
. Untuk mencari file .lzma
dan .xz
, instal perpustakaan lzma (disarankan), misalnya dengan sudo apt-get install -y liblzma-dev
. Untuk mencari file .lz4
, instal perpustakaan lz4 (opsional, tidak wajib), misalnya dengan sudo apt-get install -y liblz4-dev
. Untuk mencari file .zst
, instal perpustakaan zstd (opsional, tidak wajib), misalnya dengan sudo apt-get install -y libzstd-dev
. Untuk mencari file .br
, instal perpustakaan brotli (opsional, tidak wajib), misalnya dengan sudo apt-get install -y libbrotli-dev
. Untuk mencari file .bz3
, instal perpustakaan bzip3 (opsional, tidak wajib), misalnya dengan sudo apt-get install -y bzip3
.
Tip
Bahkan jika sistem Anda memiliki utilitas baris perintah, seperti bzip2
, itu tidak berarti bahwa perpustakaan pengembangan seperti libbz2
telah diinstal. Perpustakaan pengembangan harus diinstal.
Beberapa sistem Linux mungkin tidak dikonfigurasi untuk memuat pustaka dinamis dari /usr/local/lib
, sehingga menyebabkan kesalahan pemuatan pustaka saat menjalankan ugrep
. Untuk memperbaikinya, tambahkan export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib"
ke file ~/.bashrc
Anda. Atau jalankan sudo ldconfig /usr/local/lib
.
Jalankan skrip ./build.sh
untuk membangun ugrep
:
$ cd ugrep
$ ./build.sh
Ini membangun ugrep
yang dapat dieksekusi di direktori ugrep/src
dengan ./configure
dan make -j
, diverifikasi dengan make test
. Ketika semua pengujian berhasil, ugrep
yang dapat dieksekusi disalin ke ugrep/bin/ugrep
dan symlink ugrep/bin/ug -> ugrep/bin/ugrep
ditambahkan untuk perintah ug
.
Perhatikan bahwa ug
sama dengan ugrep
tetapi juga memuat file konfigurasi .ugrep ketika ada di direktori kerja atau direktori home. Ini berarti Anda dapat menentukan opsi default untuk ug
di .ugrep.
Jalur alternatif ke perpustakaan terinstal atau lokal dapat ditentukan dengan ./build.sh
. Untuk mendapatkan bantuan tentang opsi build yang tersedia:
$ ./build.sh --help
Anda dapat membuat executable statis dengan menentukan:
$ ./build.sh --enable-static
Ini mungkin gagal jika perpustakaan tidak terhubung secara statis, seperti brotli. Dalam hal ini coba ./build.sh --enable-static --without-brotli
.
Anda dapat membuat ugrep
dengan mengaktifkan default khusus, seperti pager:
$ ./build.sh --enable-pager
Opsi untuk memilih default untuk build meliputi:
--help
menampilkan opsi pembuatan--enable-static
membangun executable statis, jika memungkinkan--enable-hidden
selalu mencari file dan direktori tersembunyi--enable-pager
selalu menggunakan pager untuk menampilkan output pada terminal--enable-pretty
mewarnai keluaran ke terminal dan menambahkan judul nama file--disable-auto-color
menonaktifkan warna otomatis, memerlukan opsi ugrep --color=auto
untuk menampilkan warna--disable-mmap
menonaktifkan file yang dipetakan memori--disable-sse2
menonaktifkan optimasi SSE2 dan AVX--disable-avx2
menonaktifkan optimasi AVX2 dan AVX512BW, tetapi kompilasi dengan SSE2 bila didukung--disable-neon
menonaktifkan optimasi ARM NEON/AArch64--with-grep-path
jalur -f
default jika GREP_PATH
tidak ditentukan--with-grep-colors
warna default jika GREP_COLORS
tidak ditentukan Setelah pembangunan selesai, salin ugrep/bin/ugrep
dan ugrep/bin/ug
ke lokasi yang sesuai, misalnya di direktori ~/bin
Anda. Atau, jika Anda ingin menginstal perintah ugrep
dan ug
serta halaman manual:
$ sudo make install
Ini juga menginstal file pola dengan pola yang telah ditentukan sebelumnya untuk opsi -f
di /usr/local/share/ugrep/patterns/
. Opsi -f
pertama-tama memeriksa direktori kerja untuk mengetahui keberadaan file pola, jika tidak ditemukan, periksa variabel lingkungan GREP_PATH
untuk memuat file pola, dan jika tidak ditemukan, baca file pola yang telah ditentukan sebelumnya yang diinstal.
Sayangnya, klon git tidak menyimpan stempel waktu yang berarti Anda mungkin mengalami "PERINGATAN: 'aclocal-1.15' hilang di sistem Anda." atau autoheader itu tidak ditemukan saat menjalankan make
.
Untuk mengatasi masalah ini, jalankan:
$ autoreconf -fi
$ ./build.sh
GCC 8 dan yang lebih tinggi dapat menghasilkan peringatan seperti "note: parameter passing for argument ... changing in GCC 7.1" . Peringatan ini harus diabaikan.
Dockerfile disertakan untuk membangun ugrep
di container Ubuntu.
Pengembang mungkin ingin menggunakan pembersih untuk memverifikasi kode ugrep ketika membuat perubahan signifikan, misalnya untuk mendeteksi data race dengan ThreadSanitizer:
$ ./build.sh CXXFLAGS='-fsanitize=thread -O1 -g'
Kami memeriksa ugrep
dengan dentang AddressSanitizer, MemorySanitizer, ThreadSanitizer, dan UndefinisiBehaviorSanitizer. Opsi ini memerlukan overhead runtime yang signifikan dan tidak boleh digunakan untuk build akhir.
? Kembali ke daftar isi
Harap dicatat bahwa perintah ugrep dan ug mencari file biner secara default dan tidak mengabaikan file tertentu .gitignore, yang tidak akan membuat perbandingan kinerja pencarian rekursif menjadi berarti kecuali opsi -I
dan --ignore-files
digunakan. Untuk menjadikan opsi ini sebagai default untuk ug , cukup tambahkan ignore-binary
dan ignore-files
ke file konfigurasi .ugrep Anda.
Untuk perbandingan kinerja ugrep terbaru terkini, silakan lihat tolok ukur kinerja ugrep. Ugrep lebih cepat dari GNU grep, Silver Searcher, ack, sift. Kecepatan Ugrep mengalahkan ripgrep di sebagian besar benchmark.
Pertama, mari kita definisikan perintah :grep
di Vim untuk mencari file secara rekursif. Untuk melakukannya, tambahkan baris berikut ke .vimrc
Anda yang terletak di direktori root:
if executable('ugrep')
set grepprg=ugrep -RInk -j -u --tabs=1 --ignore-files
set grepformat=%f:%l:%c:%m,%f+%l+%c+%m,%-G%f\|%l\|%c\|%m
endif
Ini menentukan -j
pencarian peka huruf besar-kecil dengan perintah Vim :grep
. Untuk penelusuran peka huruf besar-kecil, hapus -j
dari grepprg
. Beberapa kecocokan pada baris yang sama dicantumkan di jendela perbaikan cepat secara terpisah. Jika ini tidak diinginkan, hapus -u
dari grepprg
. Dengan perubahan ini, hanya kecocokan pertama dalam satu baris yang ditampilkan. Opsi --ignore-files
melewatkan file yang ditentukan dalam file .gitignore
, jika ada. Untuk membatasi kedalaman pencarian rekursif hanya pada direktori saat ini, tambahkan -1
ke grepprg
.
Anda sekarang dapat menjalankan perintah Vim :grep
di Vim untuk mencari file pada PATH
tertentu untuk PATTERN
yang cocok:
:grep PATTERN [PATH]
Jika Anda menghilangkan PATH
, maka direktori kerja akan dicari. Gunakan %
sebagai PATH
untuk mencari hanya file yang sedang dibuka di Vim:
:grep PATTERN %
Perintah :grep
menampilkan hasil di jendela perbaikan cepat yang memungkinkan Anda melompat ke kecocokan yang ditemukan dengan cepat.
Untuk membuka jendela perbaikan cepat dengan daftar kecocokan terbaru:
:copen
Klik dua kali pada baris di jendela ini (atau pilih baris dan tekan ENTER) untuk melompat ke file dan lokasi di file yang cocok. Masukkan perintah :cn
dan :cp
untuk melompat ke pertandingan berikutnya atau sebelumnya. Untuk memperbarui hasil pencarian di jendela perbaikan cepat, ambil saja hasil tersebut. Misalnya, untuk mencari kode sumber C++ bertanda FIXME
secara rekursif di direktori kerja:
:grep -tc++ FIXME
Untuk menutup jendela perbaikan cepat:
:cclose
Anda dapat menggunakan opsi ugrep dengan perintah :grep
, misalnya untuk memilih komentar satu baris dan beberapa baris dalam file saat ini:
:grep -f c++/comments %
Hanya baris pertama dari komentar multi-baris yang ditampilkan dalam perbaikan cepat, untuk menghemat ruang. Untuk menampilkan semua baris kecocokan multi-baris, hapus %-G
dari grepformat
.
Alat Vim yang populer adalah ctrlp.vim, yang diinstal dengan:
$ cd ~/.vim
$ git clone https://github.com/kien/ctrlp.vim.git bundle/ctrlp.vim
CtrlP menggunakan ugrep dengan menambahkan baris berikut ke .vimrc
Anda :
if executable('ugrep')
set runtimepath^=~/.vim/bundle/ctrlp.vim
let g:ctrlp_match_window='bottom,order:ttb'
let g:ctrlp_user_command='ugrep "" %s -Rl -I --ignore-files -3'
endif
di mana -I
melewatkan file biner, opsi --ignore-files
melewatkan file yang ditentukan dalam file .gitignore
, jika ada, dan opsi -3
membatasi pencarian direktori hingga tiga tingkat (direktori kerja dan hingga dua tingkat di bawahnya).
Mulai Vim lalu masukkan perintah:
:helptags ~/.vim/bundle/ctrlp.vim/doc
Untuk melihat dokumentasi CtrlP di Vim, masukkan perintah:
:help ctrlp.txt
? Kembali ke daftar isi
Berkat Manuel Uberti, kini Anda dapat menggunakan ugrep di Emacs. Untuk menggunakan ugrep alih-alih GNU grep di Emacs, tambahkan baris berikut ke file .emacs.d/init.el
Anda:
(setq-default xref-search-program ‘ugrep)
Ini berarti perintah Emacs seperti project-find-regexp
yang mengandalkan Xref kini dapat memanfaatkan kekuatan ugrep .
Selain itu, dimungkinkan untuk menggunakan grep
dalam perintah grep Emacs. Misalnya, Anda dapat menjalankan lgrep
dengan ugrep
dengan mengkustomisasi grep-template
menjadi seperti berikut:
(setq-default grep-template "ugrep --color=always -0Iinr -e <R>")
Jika Anda tidak memiliki Emacs versi 29 (atau lebih tinggi), Anda dapat mengunduh dan membuat Emacs dari cabang master Emacs, atau mengaktifkan integrasi Xref dengan ugrep secara manual:
(with-eval-after-load 'xref
(push '(ugrep . "xargs -0 ugrep <C> --null -ns -e <R>")
xref-search-program-alist)
(setq-default xref-search-program 'ugrep))
? Kembali ke daftar isi
Ugrep yang siap pakai mendukung semua opsi baris perintah grep GNU/BSD standar dan juga meningkatkan banyak opsi tersebut. Untuk detailnya lihat peningkatan penting pada grep.
Jika Anda ingin tetap menggunakan pola Unicode non-UTF GNU/BSD grep ASCII/LATIN1, gunakan opsi -U
untuk menonaktifkan pencocokan pola Unicode penuh.
Faktanya, mengeksekusi ugrep
dengan opsi -U
, -Y
, -.
dan --sort
membuatnya berperilaku persis seperti egrep
, hanya mencocokkan pola Unicode non-UTF ASCII/LATIN1, memungkinkan pola kosong untuk mencocokkan dan mencari file tersembunyi alih-alih mengabaikannya. Lihat kesetaraan grep.
Anda dapat membuat alias grep yang nyaman dengan atau tanpa opsi -U
, -Y
, -.
dan --sort
atau sertakan opsi lain sesuai keinginan.
Atau Anda dapat membuat executable grep
, egrep
dan fgrep
dengan menyalin ugrep
ke nama tersebut. Ketika executable ugrep
(atau ugrep.exe
) disalin sebagai grep
( grep.exe
), egrep
( egrep.exe
), fgrep
( fgrep.exe
), lalu opsi -U
, -Y
dan -.
secara otomatis diaktifkan bersama dengan -G
untuk grep
, -E
untuk egrep
dan -F
untuk fgrep
. Selain itu, ketika disalin sebagai zgrep
, zegrep
dan zfgrep
, opsi -z
diaktifkan. Misalnya, ketika ugrep
disalin sebagai zegrep
, opsi -z
, -E
, -Y
, -.
dan --sort
diaktifkan.
Demikian pula, symlink dan hard link ke ugrep
juga berfungsi dengan baik untuk membuat pengganti grep
, egrep
dan fgrep
. Misalnya, untuk membuat symlink egrep
:
sudo ln -s `which ugrep` /opt/local/bin/egrep
/opt/local/bin
hanyalah sebuah contoh dan mungkin ada atau tidak ada di $path
Anda dan mungkin ditemukan atau tidak ditemukan saat menjalankan egrep
tergantung pada $path
Anda.
ugrep setara dengan grep GNU/BSD ketika opsi berikut digunakan:
grep = ugrep -G -U -Y -. --sort -Dread -dread
egrep = ugrep -E -U -Y -. --sort -Dread -dread
fgrep = ugrep -F -U -Y -. --sort -Dread -dread
zgrep = ugrep -z -G -U -Y -. --sort -Dread -dread
zegrep = ugrep -z -E -U -Y -. --sort -Dread -dread
zfgrep = ugrep -z -F -U -Y -. --sort -Dread -dread
Di mana:
-U
menonaktifkan pencocokan pola karakter lebar Unicode, jadi misalnya pola xa3
cocok dengan byte A3 alih-alih titik kode Unicode U+00A3 yang diwakili oleh urutan UTF-8 C2 A3. Secara default di ugrep, xa3
cocok dengan U+00A3. Kami tidak menyarankan penggunaan -U
untuk pencarian pola teks, hanya untuk pencarian biner atau untuk mencari file latin-1 (iso-8859-1) tanpa melaporkan file ini sebagai biner (sejak ugrep v3.5.0).-Y
mengaktifkan pencocokan kosong, jadi misalnya pola a*
cocok dengan setiap baris, bukan urutan a
. Secara default di ugrep, pola a*
cocok dengan urutan a
. Selain itu, dalam ugrep pola a*b*c*
cocok dengan apa yang seharusnya cocok secara default. Lihat peningkatan.-.
mencari file tersembunyi (dotfiles). Secara default, file tersembunyi diabaikan, seperti kebanyakan utilitas Unix.--sort
menentukan keluaran yang diurutkan berdasarkan nama jalur, menampilkan file pencocokan yang diurutkan terlebih dahulu diikuti dengan pencocokan rekursif yang diurutkan dalam subdirektori. Jika tidak, file yang cocok dilaporkan tanpa urutan tertentu untuk meningkatkan kinerja;-Dread
dan -dread
adalah default grep GNU/BSD namun tidak direkomendasikan, lihat penyempurnaan untuk penjelasannya.? Kembali ke daftar isi
Alias yang umum digunakan untuk ditambahkan ke .bashrc
guna meningkatkan produktivitas:
alias uq = 'ug -Q' # interactive TUI search (uses .ugrep config)
alias uz = 'ug -z' # compressed files and archives search (uses .ugrep config)
alias ux = 'ug -U --hexdump' # binary pattern search (uses .ugrep config)
alias ugit = 'ug -R --ignore-files' # works like git-grep & define your preferences in .ugrep config
alias grep = 'ug -G' # search with basic regular expressions (BRE) like grep
alias egrep = 'ug -E' # search with extended regular expressions (ERE) like egrep
alias fgrep = 'ug -F' # find string(s) like fgrep
alias zgrep = 'ug -zG' # search compressed files and archives with BRE
alias zegrep = 'ug -zE' # search compressed files and archives with ERE
alias zfgrep = 'ug -zF' # find string(s) in compressed files and/or archives
alias xdump = 'ugrep -X ""' # hexdump files without searching (don't use .ugrep config)
alias zmore = 'ugrep+ -z -I -+ --pager ""' # view compressed, archived and regular files (don't use .ugrep config)
? Kembali ke daftar isi
-Q
.n
.-U
).--bool
).--ignore-files
.-Z
.-z
.-z
.-z
dan --zmax=NUM
hingga NUM
level.--filter
menggunakan utilitas konversi format pihak ketiga sebagai plugin.-r
untuk mencari direktori secara rekursif.-.
).-E
sebagai egrep, sedangkan -G
mengaktifkan BRE).-J1
).-W
(keluaran kecocokan biner dalam hex dengan teks cocok dengan output seperti biasa) dan -X
(output semua kecocokan dalam hex).--format
).-f
menggunakan variabel lingkungan GREP_PATH
atau pola yang telah ditentukan sebelumnya yang diinstal di /usr/local/share/ugrep/patterns
. Jika -f
ditentukan dan juga satu atau lebih pola -e
ditentukan, maka opsi -F
, -x
, dan -w
tidak berlaku untuk pola -f
. Hal ini untuk menghindari kebingungan ketika -f
digunakan dengan pola yang telah ditentukan sebelumnya yang mungkin tidak lagi berfungsi dengan baik dengan opsi ini.-O
, -M
, dan -t
menentukan masing-masing ekstensi file, pola byte ajaib tanda tangan file, dan tipe file yang telah ditentukan sebelumnya. Hal ini memungkinkan pencarian jenis file tertentu di pohon direktori, misalnya dengan opsi pencarian rekursif -R
dan -r
. Pilihan -O
, -M
, dan -t
juga berlaku untuk file yang diarsipkan dalam file cpio, jar, pax, tar, zip dan 7z.-k
, --column-number
untuk menampilkan nomor kolom, dengan mempertimbangkan jarak tab dengan memperluas tab, seperti yang ditentukan oleh opsi --tabs
.-P
(ekspresi reguler Perl) mendukung referensi balik (dengan --format
) dan tampilan di belakang, yang menggunakan pustaka PCRE2 atau Boost.Regex untuk pencocokan regex Perl yang cepat dengan sintaksis mirip PCRE.-b
dengan opsi -o
atau dengan opsi -u
, ugrep menampilkan offset byte yang tepat dari kecocokan pola alih-alih offset byte dari awal baris yang cocok yang dilaporkan oleh GNU/BSD grep.-u
, --ungroup
untuk tidak mengelompokkan beberapa kecocokan per baris. Opsi ini menampilkan kembali baris input yang cocok untuk setiap kecocokan pola tambahan pada baris tersebut. Opsi ini sangat berguna dengan opsi -c
untuk melaporkan jumlah total kecocokan pola per file, bukan jumlah baris yang cocok per file.-Y
memungkinkan pencocokan pola kosong. Grepping dengan pola pencocokan kosong adalah hal yang aneh dan memberikan hasil yang berbeda dengan grep GNU versus grep BSD. Pencocokan kosong tidak dihasilkan oleh ugrep secara default, sehingga menghindari kesalahan yang mungkin menghasilkan hasil "acak". Misalnya, dengan grep GNU/BSD, pola a*
cocok dengan setiap baris dalam masukan, dan benar-benar cocok dengan xyz
tiga kali (transisi kosong sebelum dan antara x
, y
, dan z
). Mengizinkan kecocokan kosong memerlukan opsi ugrep -Y
. Pola yang dimulai dengan ^
atau diakhiri dengan $
, seperti ^h*$
, cocok dengan kosong. Pola-pola ini secara otomatis mengaktifkan opsi -Y
.-D, --devices=ACTION
skip
secara default, bukan read
. Hal ini mencegah terjadinya hang pada pipa bernama di direktori yang dicari secara rekursif, seperti yang mungkin terjadi pada grep GNU/BSD yang read
perangkat secara default.-d, --directories=ACTION
skip
secara default, bukan read
. Secara default, direktori yang ditentukan pada baris perintah dicari, tetapi tidak secara rekursif masuk lebih dalam ke dalam subdirektori.-N PATTERN
, yang merupakan pola dalam bentuk (?^X)
yang melewatkan semua masukan X
, sehingga menghapus X
dari pencarian. Misalnya, pola negatif dapat digunakan untuk melewatkan string dan komentar saat mencari pengidentifikasi dalam kode sumber dan menemukan kecocokan yang tidak ada dalam string dan komentar. Pola zap
yang telah ditentukan sebelumnya menggunakan pola negatif, misalnya, gunakan -f cpp/zap_comments
untuk mengabaikan kecocokan pola di komentar C++.GREP_OPTIONS
, karena perilaku ugrep harus portabel dan dapat diprediksi pada setiap sistem. GNU grep juga mengabaikan GREP_OPTIONS
karena alasan ini. Silakan gunakan perintah ug
yang memuat file konfigurasi .ugrep yang terletak di direktori kerja atau di direktori home jika ada, atau gunakan alias shell untuk membuat perintah baru dengan opsi pencarian tertentu.? Kembali ke daftar isi
Untuk melakukan pencarian menggunakan file konfigurasi .ugrep
ditempatkan di direktori kerja atau direktori home (perhatikan bahwa ug
sama dengan ugrep --config
):
ug PATTERN FILE...
Untuk menyimpan file konfigurasi .ugrep
ke direktori kerja, lalu edit file ini di direktori home Anda untuk menyesuaikan preferensi Anda untuk default ug
:
ug --save-config
Untuk mencari direktori kerja dan secara rekursif lebih dalam untuk main
(perhatikan bahwa -r
symlink berulang diaktifkan secara default jika tidak ada argumen file yang ditentukan):
ug main
Sama, tetapi hanya mencari file kode sumber C++ secara rekursif, mengabaikan semua file lainnya:
ug -tc++ main
Sama, menggunakan kueri interaktif TUI, dimulai dengan pola pencarian awal main
(perhatikan bahwa -Q
dengan pola awal memerlukan opsi -e
karena pola biasanya ditentukan secara interaktif dan semua argumen baris perintah dianggap sebagai file/direktori):
ug -Q -tc++ -e main
Untuk mencari #define
(dan # define
dll) menggunakan pola regex dalam file C++ (perhatikan bahwa pola harus dikutip untuk mencegah penggumpalan shell *
dan ?
):
ug -tc++ '#[t ]*define'
Untuk mencari main
sebagai sebuah kata ( -w
) secara rekursif tanpa mengikuti symlink ( -r
) dalam direktori myproject
, menampilkan nomor baris ( -n
) dan kolom ( -k
) yang cocok di sebelah baris yang cocok:
ug -r -nkw main myproject
Sama, tetapi hanya mencari myproject
tanpa mengulang lebih dalam (perhatikan bahwa argumen direktori dicari pada satu tingkat secara default):
ug -nkw main myproject
Sama, tetapi cari myproject
dan satu tingkat subdirektori lebih dalam (dua tingkat) dengan -2
:
ug -2 -nkw main myproject
Sama, tetapi hanya mencari file C++ di myproject
dan subdirektorinya dengan -tc++
:
ug -tc++ -2 -nkw main myproject
Sama, tetapi juga mencari di dalam arsip (misalnya file zip dan tar) dan file terkompresi dengan -z
:
ug -z -tc++ -2 -nkw main myproject
Cari direktori kerja secara rekursif untuk main
sambil mengabaikan file gitignore (misalnya dengan asumsi .gitignore
ada di direktori kerja atau di bawahnya):
ug --ignore-files -tc++ -nkw main
Untuk membuat daftar semua file di direktori kerja dan lebih dalam yang tidak diabaikan oleh file .gitignore
:
ug --ignore-files -l ''
Untuk menampilkan daftar ekstensi nama file dan "byte ajaib" (shebangs) yang dicari sesuai dengan argumen -t
:
ug -tlist
Untuk membuat daftar semua file shell secara rekursif, berdasarkan ekstensi dan shebang dengan -l
(perhatikan bahwa ''
cocok dengan file yang tidak kosong):
ug -l -tShell ''
? Kembali ke daftar isi
Untuk mencari main
dalam kode sumber sambil mengabaikan string dan blok komentar, Anda dapat menggunakan pola negatif dengan opsi -N
untuk melewati kecocokan yang tidak diinginkan dalam string dan blok komentar yang dikutip C/C++:
ug -r -nkw -e 'main' -N '"(\.|\r?n|[^\n"])*"|//.*|/*(.*n)*?.**+/' myproject
Ini banyak pekerjaan untuk mengetik dengan benar! Jika Anda seperti saya, saya tidak ingin menghabiskan waktu mengutak-atik pola regex ketika saya mengerjakan sesuatu yang lebih penting. Ada cara yang lebih mudah dengan menggunakan pola standar ugrep ( -f
) yang diinstal dengan alat ugrep
:
ug -r -nkw 'main' -f c/zap_strings -f c/zap_comments myproject
Kueri ini juga mencari file lain selain kode sumber C/C++, seperti README, Makefile, dan seterusnya. Kami juga melewatkan symlink dengan -r
. Jadi mari kita perbaiki kueri ini dengan memilih file C/C ++ hanya menggunakan opsi -tc,c++
dan sertakan symlink ke file dan direktori dengan -R
:
ug -R -tc,c++ -nkw 'main' -f c/zap_strings -f c/zap_comments myproject
Bagaimana jika Anda hanya ingin mencari pengidentifikasi main
tetapi tidak sebagai fungsi main(
? Dalam hal ini, gunakan pola negatif untuk ini untuk melewatkan mainh*(
pola cocok:
ug -R -tc,c++ -nkw -e 'main' -N 'mainh*(' -f c/zap_strings -f c/zap_comments myproject
Ini menggunakan opsi -e
dan -N
untuk secara eksplisit menentukan pola dan pola negatif, masing -masing, yang pada dasarnya membentuk pola main|(?^mainh*()
, di mana h
cocok dengan ruang dan tab. Secara umum , pola negatif berguna untuk menyaring kecocokan pola yang tidak kami minati.
Sebagai contoh lain, katakanlah kita mungkin ingin mencari kata FIXME
di blok komentar C/C ++. Untuk melakukannya kita dapat memilih blok komentar terlebih dahulu dengan pola c/comments
UGrep yang telah ditentukan dan kemudian memilih baris dengan FIXME
menggunakan pipa:
ug -R -tc,c++ -nk -f c/comments myproject | ug -w 'FIXME'
Hasil pemfilteran dengan pipa umumnya lebih mudah daripada menggunakan dan-atau-logika yang digunakan beberapa alat pencarian. Pendekatan ini mengikuti semangat UNIX untuk menjaga utilitas tetap sederhana dan menggunakannya dalam kombinasi untuk tugas yang lebih kompleks.
Mari kita hasilkan daftar semua pengidentifikasi yang ditemukan dalam kode sumber Java saat melewatkan string dan komentar:
ug -R -tjava -f java/names myproject | sort -u
Ini cocok dengan pengidentifikasi Java Unicode menggunakan regex p{JavaIdentifierStart}p{JavaIdentifierPart}*
didefinisikan dalam patterns/java/names
.
Dengan alat-alat GREP dan GREP tradisional, dibutuhkan upaya besar untuk mencari file sumber C/C ++ secara rekursif yang mendefinisikan fungsi qsort
, yang membutuhkan sesuatu seperti ini:
ug -R --include='*.c' --include='*.cpp' '^([ t]*[[:word:]:*&]+)+[ t]+qsort[ t]*([^;n]+$' myproject
Untungnya, dengan UGrep kami dapat dengan mudah memilih semua definisi fungsi dalam file dengan ekstensi .c
atau .cpp
dengan menggunakan opsi -Oc,cpp
dan dengan menggunakan functions
pola yang telah ditentukan yang diinstal dengan alat untuk menghasilkan semua definisi fungsi. Kemudian kami memilih yang kami inginkan:
ug -R -Oc,cpp -nk -f c/functions | ug 'qsort'
Perhatikan bahwa kami dapat menggunakan -tc,c++
untuk memilih file C/C ++, tetapi ini juga termasuk file header ketika kami hanya ingin mencari file .c
dan .cpp
.
Kami juga dapat melewatkan file dan direktori dari dicari yang didefinisikan dalam .gitignore
. Untuk melakukannya kami menggunakan --ignore-files
untuk mengecualikan file dan direktori dari pencarian rekursif yang cocok dengan Globs di .gitignore
, ketika satu atau lebih file .gitignore
ditemukan:
ug -R -tc++ --ignore-files -f c++/defines
Ini mencari file C ++ ( -tc++
) di direktori kerja untuk #define
line ( -f c++/defines
), sambil melewatkan file dan direktori yang dideklarasikan dalam .gitignore
. Jika Anda menemukan ini terlalu lama untuk mengetik maka tentukan alias untuk mencari direktori github:
alias ugit='ugrep -R --ignore-files'
ugit -tc++ -f c++/defines
Untuk menyoroti kecocokan saat didorong melalui rantai pipa yang harus kita gunakan --color=always
:
ugit --color=always -tc++ -f c++/defines | ugrep -w 'FOO.*'
Ini mengembalikan daftar warna-warna dari semua #define FOO...
makro dalam file kode sumber C/C ++, melewatkan file yang ditentukan dalam .gitignore
.
Perhatikan bahwa pelengkap --exclude
tidak --include
, karena pengecualian selalu lebih diutamakan daripada inklusi, jadi kami tidak dapat dengan andal membuat daftar file yang diabaikan dengan --include-from='.gitignore'
. Hanya file yang secara eksplisit yang ditentukan dengan --include
dan direktori yang secara eksplisit ditentukan dengan --include-dir
dikunjungi. --include-from
daftar globs yang dianggap baik file dan direktori untuk ditambahkan ke --include
dan --include-dir
, masing-masing. Ini berarti bahwa ketika nama direktori dan jalur direktori tidak secara eksplisit terdaftar dalam file ini maka tidak akan dikunjungi menggunakan --include-from
.
Karena UGrep memeriksa jika inputnya valid unicode yang dikodekan UTF (kecuali -U
digunakan), dimungkinkan untuk menggunakannya sebagai filter untuk mengabaikan output non-UTF yang dihasilkan oleh suatu program:
program | ugrep -I ''
Jika program menghasilkan output yang valid maka output dilewati, jika tidak, output disaring opsi -I
. Jika output awalnya valid untuk porsi yang sangat besar tetapi diikuti oleh output yang tidak valid, maka UGREP pada awalnya dapat menunjukkan output hingga tetapi tidak termasuk output yang tidak valid setelah itu output lebih lanjut diblokir.
Untuk memfilter garis yang valid ASCII atau UTF-encoded, saat menghapus garis yang tidak:
program | ugrep '[p{Unicode}--[n]]+'
Perhatikan bahwa p{Unicode}
cocok n
tetapi kami tidak ingin mencocokkan seluruh file! Hanya baris dengan [p{Unicode}--[n]]+
.
? Kembali ke daftar isi
Halaman UGrep Man:
man ugrep
Untuk menampilkan halaman bantuan:
ug --help
Untuk menampilkan opsi yang menyebutkan WHAT
:
ug --help WHAT
Untuk menampilkan daftar nilai opsi -t TYPES
:
ug -tlist
Dalam kueri interaktif TUI, tekan F1 atau Ctrl-Z untuk bantuan dan opsi:
ug -Q
? Kembali ke daftar isi
--config[=FILE], ---[FILE]
Use configuration FILE. The default FILE is `.ugrep'. The working
directory is checked first for FILE, then the home directory. The
options specified in the configuration FILE are parsed first,
followed by the remaining options specified on the command line.
The ug command automatically loads a `.ugrep' configuration file,
unless --config=FILE or --no-config is specified.
--no-config
Do not load the default .ugrep configuration file.
--save-config[=FILE] [OPTIONS]
Save configuration FILE to include OPTIONS. Update FILE when
first loaded with --config=FILE. The default FILE is `.ugrep',
which is automatically loaded by the ug command. When FILE is a
`-', writes the configuration to standard output. Only part of the
OPTIONS are saved that do not cause searches to fail when combined
with other options. Additional options may be specified by editing
the saved configuration file. A configuration file may be modified
manually to specify one or more config[=FILE] to indirectly load
the specified FILEs, but recursive config loading is not allowed.
Perintah ug
dimaksudkan untuk pencarian interaktif yang bergantung pada konteks dan setara dengan perintah ugrep --config
untuk memuat file konfigurasi .ugrep
saat hadir di direktori kerja atau, ketika tidak ditemukan, di direktori home:
ug PATTERN ...
ugrep --config PATTERN ...
Perintah ug
juga mengurutkan file berdasarkan nama per direktori yang dicari. File konfigurasi berisi NAME=VALUE
per baris, di mana NAME
adalah nama opsi panjang (tanpa --
) dan =VALUE
adalah argumen, yang opsional dan dapat dihilangkan tergantung pada opsi. Garis dan garis kosong yang dimulai dengan #
diabaikan:
# Color scheme
colors=cx=hb:ms=hiy:mc=hic:fn=hi+y+K:ln=hg:cn=hg:bn=hg:se=
# Disable searching hidden files and directories
no-hidden
# ignore files specified in .ignore and .gitignore in recursive searches
ignore-files=.ignore
ignore-files=.gitignore
Opsi baris perintah diuraikan dalam urutan berikut: Pertama file konfigurasi (default atau bernama) dimuat, kemudian opsi dan argumen yang tersisa pada baris perintah diuraikan.
Opsi --stats
Menampilkan file konfigurasi yang digunakan setelah pencarian.
File konfigurasi bernama dimaksudkan untuk merampingkan tugas pencarian khusus, dengan mengurangi jumlah opsi baris perintah menjadi hanya satu ---FILE
untuk menggunakan kumpulan opsi yang ditentukan dalam FILE
. Opsi --config=FILE
dan formulir singkatnya ---FILE
Muat file konfigurasi yang ditentukan yang terletak di direktori kerja atau, ketika tidak ditemukan, terletak di direktori home:
ug ---FILE PATTERN ...
ugrep ---FILE PATTERN ...
Kesalahan dihasilkan ketika FILE
tidak ditemukan atau tidak dapat dibaca.
File konfigurasi yang disebutkan dapat digunakan untuk menentukan kumpulan opsi yang khusus untuk persyaratan tugas dalam alur kerja pengembangan suatu proyek. Misalnya untuk melaporkan masalah yang belum terselesaikan dengan memeriksa kode sumber dan dokumentasi untuk komentar dengan item FixMe dan TODO. File konfigurasi bernama tersebut dapat dilokalisasi ke proyek dengan menempatkannya di direktori proyek, atau dapat dibuat global dengan menempatkannya di direktori home. Untuk umpan balik visual, skema warna khusus untuk tugas ini dapat ditentukan dengan colors
opsi dalam FILE
konfigurasi untuk membantu mengidentifikasi output yang dihasilkan oleh konfigurasi bernama yang bertentangan dengan konfigurasi default.
Opsi --save-config
menyimpan file konfigurasi .ugrep
ke direktori kerja menggunakan konfigurasi saat ini dimuat dengan --config
. Ini menyimpan konfigurasi saat ini yang dikombinasikan dengan opsi tambahan saat ditentukan juga. Hanya opsi -opsi yang tidak dapat bertentangan dengan opsi dan opsi lain yang tidak dapat berdampak negatif pada hasil pencarian akan disimpan.
Opsi --save-config=FILE
menyimpan konfigurasi ke FILE
yang ditentukan. Konfigurasi ditulis ke output standar saat FILE
adalah -
.
Atau, file konfigurasi dapat dibuat atau dimodifikasi secara manual. File konfigurasi dapat mencakup satu atau lebih config[=FILE]
untuk secara tidak langsung memuat FILE
specfified, tetapi pemuatan konfigurasi rekursif dilarang. Cara paling sederhana untuk manuall membuat file konfigurasi adalah dengan menentukan config
di bagian atas file, diikuti oleh opsi panjang untuk mengganti default.
? Kembali ke daftar isi
-Q[=DELAY], --query[=DELAY]
Query mode: start a TUI to perform interactive searches. This mode
requires an ANSI capable terminal. An optional DELAY argument may
be specified to reduce or increase the response time to execute
searches after the last key press, in increments of 100ms, where
the default is 3 (300ms delay). No whitespace may be given between
-Q and its argument DELAY. Initial patterns may be specified with
-e PATTERN, i.e. a PATTERN argument requires option -e. Press F1
or CTRL-Z to view the help screen. Press F2 or CTRL-Y to invoke a
command to view or edit the file shown at the top of the screen.
The command can be specified with option --view, or defaults to
environment variable PAGER when defined, or EDITOR. Press Tab and
Shift-Tab to navigate directories and to select a file to search.
Press Enter to select lines to output. Press ALT-l for option -l
to list files, ALT-n for -n, etc. Non-option commands include
ALT-] to increase context. See also options --no-confirm, --delay,
--split and --view.
--no-confirm
Do not confirm actions in -Q query TUI. The default is confirm.
--delay=DELAY
Set the default -Q key response delay. Default is 3 for 300ms.
--split
Split the -Q query TUI screen on startup.
--view[=COMMAND]
Use COMMAND to view/edit a file in -Q query TUI by pressing CTRL-Y.
Opsi ini memulai antarmuka pengguna untuk memasuki pola pencarian secara interaktif:
-c
untuk menghitung kecocokan. Menekan Alt -C kembali menonaktifkan -c
. Opsi dapat diaktifkan dengan tombol ALT saat mencari atau saat melihat layar bantuan. Jika tombol ALT/META tidak didukung (misalnya X11 Xterm), maka tekan Ctrl-O diikuti oleh kunci yang sesuai dengan opsi.-g
file dan direktori yang cocok dengan Globs, daftar pola Glob yang dipisahkan secara koma. Presssing ESC mengembalikan kontrol ke prompt pola kueri (Globs disimpan). Ketika glob didahului oleh A !
Atau ^
, lewati file yang namanya cocok dengan glob ketika glob berisi /
, nama path penuh dicocokkan. Jika tidak, basa -basi dicocokkan. Ketika glob berakhir dengan A /
, direktori dicocokkan.Q>
(normal), F>
(string tetap), G>
(dasar regex), P>
(pencocokan perl), dan Z>
(pencocokan fuzzy). Ketika --glob=
prompt ditampilkan, daftar pola Glob gaya Gitignore yang dipisahkan secara koma dapat dimasukkan. Presssing ESC mengembalikan kontrol ke prompt pola.--view
.--view=COMMAND
. Jika tidak, variabel lingkungan PAGER
atau EDITOR
digunakan untuk memohon perintah dengan Ctrl-y. Nama file harus diaktifkan dan terlihat dalam output untuk menggunakan fitur ini.--color
.DELAY
yang rendah seperti 1. Namun, nilai yang lebih rendah dapat meningkatkan beban sistem sebagai hasil dari berulang kali memulai dan membatalkan pencarian oleh setiap tombol yang ditekan.--heading
diaktifkan secara default. Tekan Alt-+ untuk mematikan heading.Pemetaan Kunci Kueri TUI:
kunci | fungsi |
---|---|
Alt-key | Toggle opsi baris perintah uGrep yang sesuai dengan key |
Alt-/ xxxx / | Masukkan titik kode heks unicode u+xxxx |
Esc Ctrl-C | kembali atau keluar |
Ctrl-Q | Keluar Cepat dan Keluaran Hasil yang dipilih dalam mode seleksi |
Tab | chdir ke direktori file yang ditampilkan di bagian atas layar atau pilih file |
Shift-Tab | chdir satu level up atau hapus pilihan |
Enter | Masukkan mode seleksi dan beralihnya baris yang dipilih untuk output saat keluar |
Up Ctrl-P | bergerak ke atas |
Down Ctrl-N | bergerak ke bawah |
Left Ctrl-B | bergerak ke kiri |
Ctrl-F Right | bergerak ke kanan |
PgUp Ctrl-G | Pindahkan tampilan dengan halaman |
PgDn Ctrl-D | pindahkan tampilan ke bawah oleh halaman |
Alt-Up | Pindahkan Display Up oleh 1/2 Halaman (MacOS Shift-Up ) |
Alt-Down | Pindahkan tampilan ke bawah dengan 1/2 halaman (MacOS Shift-Down ) |
Alt-Left | Pindahkan tampilan ditinggalkan oleh 1/2 halaman (MacOS Shift-Left ) |
Alt-Right | Pindahkan Tampilan Kanan dengan 1/2 Halaman (MacOS Shift-Right ) |
Home Ctrl-A | Pindahkan kursor ke awal garis |
End Ctrl-E | Pindahkan kursor ke ujung garis |
Ctrl-K | Hapus setelah kursor |
Ctrl-L | Layar Refresh |
key Ctrl-O + | Toggle Opsi Baris Perintah UGrep yang sesuai dengan key , sama seperti Alt-key |
Ctrl-R F4 | Lompat ke Bookmark |
Ctrl-S | Lompat ke dir/file/konteks berikutnya |
Ctrl-T F5 | Toggle Split Screen ( --split memulai TUI layar terbelah) |
Ctrl-U | Hapus sebelum kursor |
Ctrl-V | Karakter kata demi kata |
Ctrl-W | Lompat kembali satu dir/file/konteks |
Ctrl-X F3 | Setel bookmark |
Ctrl-Y F2 | melihat atau mengedit file yang ditampilkan di bagian atas layar |
Ctrl-Z F1 | Lihat Bantuan dan Opsi |
Ctrl-^ | chdir kembali ke direktori kerja awal |
Ctrl-] | Toggle Color/Mono |
Ctrl- | proses penghentian |
Untuk mencari secara interaktif file di direktori kerja dan di bawah ini:
ug -Q
Sama, tetapi terbatas hanya pada file C ++ dan mengabaikan file .gitignore
:
ug -Q -tc++ --ignore-files
Untuk mencari secara interaktif semua makefile di direktori kerja dan di bawah ini:
ug -Q -g 'Makefile*' -g 'makefile*'
Sama, tetapi hingga 2 level direktori (bekerja dan satu tingkat subdirektori):
ug -Q -2 -g 'Makefile*' -g 'makefile*'
Untuk secara interaktif melihat konten main.cpp
dan mencarinya, di mana -y
menunjukkan garis yang tidak cocok sebagai konteks:
ug -Q -y main.cpp
Untuk secara interaktif mencari main.cpp
, dimulai dengan pola pencarian TODO
dan konteks pencocokan 5 baris (konteks dapat diaktifkan dan dinonaktifkan secara interaktif, ini juga mengesampingkan ukuran konteks default 2 baris):
ug -Q -C5 -e TODO main.cpp
Untuk melihat dan mencari isi arsip (misalnya zip, tarball):
ug -Q -z archive.tar.gz
Untuk secara interaktif memilih file dari project.zip
ke Decompress dengan unzip
, menggunakan mode pemilihan UGREP Query (tekan ENTER untuk memilih baris):
unzip project.zip `zipinfo -1 project.zip | ugrep -Q`
? Kembali ke daftar isi
-L, --files-without-match
Only the names of files not containing selected lines are written
to standard output. Pathnames are listed once per file searched.
If the standard input is searched, the string ``(standard input)''
is written.
-l, --files-with-matches
Only the names of files containing selected lines are written to
standard output. ugrep will only search a file until a match has
been found, making searches potentially less expensive. Pathnames
are listed once per file searched. If the standard input is
searched, the string ``(standard input)'' is written.
-R, --dereference-recursive
Recursively read all files under each directory. Follow all
symbolic links to files and directories, unlike -r.
-r, --recursive
Recursively read all files under each directory, following symbolic
links only if they are on the command line. Note that when no FILE
arguments are specified and input is read from a terminal,
recursive searches are performed as if -r is specified.
-S, --dereference-files
When -r is specified, symbolic links to files are followed, but not
to directories. The default is not to follow symbolic links.
--depth=[MIN,][MAX], -1, -2, -3, ... -9, -10, -11, -12, ...
Restrict recursive searches from MIN to MAX directory levels deep,
where -1 (--depth=1) searches the specified path without recursing
into subdirectories. Note that -3 -5, -3-5, and -35 search 3 to 5
levels deep. Enables -r if -R or -r is not specified.
-g GLOBS, --glob=GLOBS
Search only files whose name matches the specified comma-separated
list of GLOBS, same as --include='glob' for each `glob' in GLOBS.
When a `glob' is preceded by a `!' or a `^', skip files whose name
matches `glob', same as --exclude='glob'. When `glob' contains a
`/', full pathnames are matched. Otherwise basenames are matched.
When `glob' ends with a `/', directories are matched, same as
--include-dir='glob' and --exclude-dir='glob'. A leading `/'
matches the working directory. This option may be repeated and may
be combined with options -M, -O and -t to expand searches. See
`ugrep --help globs' and `man ugrep' section GLOBBING for details.
-O EXTENSIONS, --file-extension=EXTENSIONS
Search only files whose filename extensions match the specified
comma-separated list of EXTENSIONS, same as --include='*.ext' for
each `ext' in EXTENSIONS. When `ext' is preceded by a `!' or a
`^', skip files whose filename extensions matches `ext', same as
--exclude='*.ext'. This option may be repeated and may be combined
with options -g, -M and -t to expand the recursive search.
-t TYPES, --file-type=TYPES
Search only files associated with TYPES, a comma-separated list of
file types. Each file type corresponds to a set of filename
extensions passed to option -O and filenames passed to option -g.
For capitalized file types, the search is expanded to include files
with matching file signature magic bytes, as if passed to option
-M. When a type is preceded by a `!' or a `^', excludes files of
the specified type. This option may be repeated.
--stats
Output statistics on the number of files and directories searched,
and the inclusion and exclusion constraints applied.
Jika tidak ada argumen file yang ditentukan dan input dibaca dari terminal, pencarian rekursif dilakukan seolah -olah -r
ditentukan. Untuk memaksa membaca dari input standar, tentukan -
sebagai argumen file.
Untuk mencantumkan semua file yang tidak kosong secara rekursif di direktori yang berfungsi:
ug -r -l ''
Untuk membuat daftar semua file yang tidak kosong di direktori kerja tetapi tidak lebih dalam (karena argumen file diberikan, dalam kasus ini .
Untuk direktori kerja):
ug -l '' .
Untuk membuat daftar semua file yang tidak kosong di direktori mydir
tetapi tidak lebih dalam (karena argumen file diberikan):
ug -l '' mydir
Untuk membuat daftar semua file yang tidak kosong di direktori mydir
dan lebih dalam saat mengikuti symlink:
ug -R -l '' mydir
Untuk mencantumkan semua file yang tidak kosong secara rekursif di jalur yang ditentukan, saat mengunjungi subdirektori saja, IE direktori mydir/
dan subdirektori pada satu tingkat mydir/*/
dikunjungi (perhatikan bahwa -2 -l
dapat disingkat -l2
):
ug -2 -l '' mydir
Untuk mendaftar secara rekursif semua file yang tidak kosong di direktori mydir
, tidak mengikuti tautan simbolik (kecuali saat pada baris perintah seperti mydir
):
ug -rl '' mydir
Untuk mendaftar secara rekursif semua makefiles yang cocok dengan teks CPP
:
ug -l -tmake 'CPP'
Untuk mendaftar secara rekursif semua Makefile.*
Pencocokan bin_PROGRAMS
:
ug -l -g'Makefile.*' 'bin_PROGRAMS'
Untuk mencantumkan semua file yang tidak kosong secara rekursif dengan ekstensi .sh, dengan -Osh
:
ug -l -Osh ''
Untuk mencantumkan semua skrip shell secara rekursif berdasarkan ekstensi dan shebangs dengan -tShell
:
ug -l -tShell ''
Untuk mencantumkan semua skrip shell secara rekursif hanya berdasarkan ekstensi dengan -tshell
:
ug -l -tshell ''
? Kembali ke daftar isi
--bool, -%, -%%
Specifies Boolean query patterns. A Boolean query pattern is
composed of `AND', `OR', `NOT' operators and grouping with `(' `)'.
Spacing between subpatterns is the same as `AND', `|' is the same
as `OR' and a `-' is the same as `NOT'. The `OR' operator binds
more tightly than `AND'. For example, --bool 'A|B C|D' matches
lines with (`A' or `B') and (`C' or `D'), --bool 'A -B' matches
lines with `A' and not `B'. Operators `AND', `OR', `NOT' require
proper spacing. For example, --bool 'A OR B AND C OR D' matches
lines with (`A' or `B') and (`C' or `D'), --bool 'A AND NOT B'
matches lines with `A' without `B'. Quoted subpatterns are matched
literally as strings. For example, --bool 'A "AND"|"OR"' matches
lines with `A' and also either `AND' or `OR'. Parentheses are used
for grouping. For example, --bool '(A B)|C' matches lines with `A'
and `B', or lines with `C'. Note that all subpatterns in a Boolean
query pattern are regular expressions, unless -F is specified.
Options -E, -F, -G, -P and -Z can be combined with --bool to match
subpatterns as strings or regular expressions (-E is the default.)
This option does not apply to -f FILE patterns. The double short
option -%% enables options --bool --files. Option --stats displays
the Boolean search patterns applied. See also options --and,
--andnot, --not, --files and --lines.
--files
Boolean file matching mode, the opposite of --lines. When combined
with option --bool, matches a file if all Boolean conditions are
satisfied. For example, --bool --files 'A B|C -D' matches a file
if some lines match `A', and some lines match either `B' or `C',
and no line matches `D'. See also options --and, --andnot, --not,
--bool and --lines. The double short option -%% enables options
--bool --files.
--lines
Boolean line matching mode for option --bool, the default mode.
--and [[-e] PATTERN] ... -e PATTERN
Specify additional patterns to match. Patterns must be specified
with -e. Each -e PATTERN following this option is considered an
alternative pattern to match, i.e. each -e is interpreted as an OR
pattern. For example, -e A -e B --and -e C -e D matches lines with
(`A' or `B') and (`C' or `D'). Note that multiple -e PATTERN are
alternations that bind more tightly together than --and. Option
--stats displays the search patterns applied. See also options
--not, --andnot, and --bool.
--andnot [[-e] PATTERN] ...
Combines --and --not. See also options --and, --not, and --bool.
--not [-e] PATTERN
Specifies that PATTERN should not match. Note that -e A --not -e B
matches lines with `A' or lines without a `B'. To match lines with
`A' that have no `B', specify -e A --andnot -e B. Option --stats
displays the search patterns applied. See also options --and,
--andnot, and --bool.
--stats
Output statistics on the number of files and directories searched,
and the inclusion and exclusion constraints applied.
Perhatikan bahwa opsi --and
, --not
, dan --andnot
memerlukan -e PATTERN
.
Opsi -%
membuat semua pola berbasis boolean, mendukung operasi logis berikut yang tercantum dari tingkat prioritas tertinggi ke yang terendah:
operator | alternatif | hasil |
---|---|---|
"x" | Cocokkan x secara harfiah dan persis seperti yang ditentukan (menggunakan regex standar lolos Q dan E ) | |
( ) | Pengelompokan ekspresi boolean | |
-x | NOT x | pertandingan terbalik, IE pertandingan jika x tidak cocok |
x|y | x OR y | cocok dengan garis dengan x atau y |
xy | x AND y | cocok dengan garis dengan x dan y |
x
dan y
adalah subpatterns yang tidak dimulai dengan simbol khusus |
, -
, dan (
(gunakan kutipan atau melarikan diri untuk mencocokkan ini);
-
NOT
sama dan diutamakan lebih dari OR
, yang berarti -x|y
== (-x)|y
misalnya.
|
dan OR
sama dan diutamakan lebih AND
, yang berarti bahwa xy|z
== x (y|z)
misalnya;
Opsi --stats
menampilkan kueri boolean dalam bentuk yang dapat dibaca manusia yang dikonversi ke CNF (bentuk normal konjungtif), setelah pencarian selesai. Untuk menunjukkan CNF tanpa pencarian, baca dari input standar diakhiri oleh EOF, seperti echo | ugrep -% '...' --stats
.
Subpatterns-highlighted dalam output, kecuali yang dinegasikan dengan NOT
(subpattern NOT
mungkin masih muncul di garis yang cocok saat menggunakan pola atau tidak seperti x|-y
). Perhatikan bahwa subpattern mungkin tumpang tindih. Dalam hal ini hanya subpattern yang cocok pertama adalah warna-warna.
Beberapa baris dapat dicocokkan ketika subpatterns cocok dengan Newline. Namun ada satu pengecualian: Subpattern yang diakhiri dengan (?=X)
Lookaheads mungkin tidak cocok ketika X
mencakup beberapa baris.
Pola kosong cocok dengan garis apa pun (standar GREP). Oleh karena itu, -% 'x|""|y'
cocok dengan segalanya dan x
dan y
tidak berwarna warna. Opsi -y
harus digunakan untuk menunjukkan setiap baris sebagai konteks, misalnya -y 'x|y'
.
Permintaan interaktif seperti FZF (pencarian boolean dengan string tetap dengan pencocokan fuzzy untuk memungkinkan EG hingga 4 karakter tambahan yang cocok dengan -Z+4
dalam kata -kata dengan -w
), tekan tab dan alt -y untuk melihat file dengan kecocokan. Tekan Shift-Tab dan Alt-L untuk kembali ke daftar file yang cocok:
ug -Q -%% -l -w -F -Z+4 --sort=best
Untuk secara rekursif menemukan semua file yang berisi hot
dan dog
di mana saja di file dengan opsi --files
:
ug -%% 'hot dog'
ug --files -e hot --and dog
Untuk menemukan garis yang mengandung hot
dan dog
di myfile.txt
:
ug -% 'hot dog' myfile.txt
ug -e hot --and dog myfile.txt
Untuk menemukan garis yang berisi place
dan kemudian juga hotdog
atau taco
(atau keduanya) di myfile.txt
:
ug -% 'hotdog|taco place' myfile.txt
ug -e hotdog -e taco --and place myfile.txt
Sama, tetapi mengecualikan garis pencocokan diner
:
ug -% 'hotdog|taco place -diner' myfile.txt
ug -e hotdog -e taco --and place --andnot diner myfile.txt
Untuk menemukan garis dengan diner
atau garis yang cocok dengan fast
dan food
tetapi tidak bad
di myfile.txt
:
ug -% 'diner|(fast food -bad)' myfile.txt
Untuk menemukan garis dengan fast food
(tepat) atau garis dengan diner
tetapi tidak bad
atau old
di myfile.txt
:
ug -% '"fast food"|diner -bad -old' myfile.txt
Sama, tetapi menggunakan ekspresi boolean yang berbeda yang memiliki arti yang sama:
ug -% '"fast food"|diner -(bad|old)' myfile.txt
Untuk menemukan garis dengan diner
yang menyiratkan good
di myfile.txt
(yaitu, tunjukkan garis dengan good
tanpa diner
dan tunjukkan garis dengan diner
tetapi hanya mereka yang good
, yang tersirat secara logis!):
ug -% 'good|-diner' myfile.txt
ug -e good --not diner myfile.txt
Untuk menemukan garis dengan foo
dan -bar
dan "baz"
di myfile.txt
(bukan itu -
"
harus dicocokkan menggunakan melarikan diri dan dengan
--and -e -bar
):
ug -% 'foo -bar "baz"' myfile.txt
ug -e foo --and -e -bar --and '"baz"' myfile.txt
Untuk mencari myfile.cpp
untuk baris dengan TODO
atau FIXME
tetapi tidak keduanya pada baris yang sama, seperti xor:
ug -% 'TODO|FIXME -(TODO FIXME)' myfile.cpp
ug -e TODO -e FIXME --and --not TODO --not FIXME myfile.cpp
? Kembali ke daftar isi
-e PATTERN, --regexp=PATTERN
Specify a PATTERN to search the input. An input line is selected
if it matches any of the specified patterns. This option is useful
when multiple -e options are used to specify multiple patterns, or
when a pattern begins with a dash (`-'), or to specify a pattern
after option -f or after the FILE arguments.
-f FILE, --file=FILE
Read newline-separated patterns from FILE. White space in patterns
is significant. Empty lines in FILE are ignored. If FILE does not
exist, the GREP_PATH environment variable is used as path to FILE.
If that fails, looks for FILE in /usr/local/share/ugrep/pattern.
When FILE is a `-', standard input is read. This option may be
repeated.
-L, --files-without-match
Only the names of files not containing selected lines are written
to standard output. Pathnames are listed once per file searched.
If the standard input is searched, the string ``(standard input)''
is written.
-N PATTERN, --neg-regexp=PATTERN
Specify a negative PATTERN to reject specific -e PATTERN matches
with a counter pattern. Note that longer patterns take precedence
over shorter patterns, i.e. a negative pattern must be of the same
length or longer to reject matching patterns. Option -N cannot be
specified with -P. This option may be repeated.
-v, --invert-match
Selected lines are those not matching any of the specified
patterns.
-w, --word-regexp
The PATTERN is searched for as a word, such that the matching text
is preceded by a non-word character and is followed by a non-word
character. Word-like characters are Unicode letters, digits and
connector punctuations such as underscore.
-x, --line-regexp
Select only those matches that exactly match the whole line, as if
the patterns are surrounded by ^ and $.
Lihat juga Pola Kueri Boolean dengan -%, -%%, -dan -tidak untuk opsi kueri Boolean yang lebih kuat daripada opsi GNU/BSD GREP tradisional.
Untuk menampilkan baris dalam file myfile.sh
tetapi tidak cocok dengan garis ^[ t]*#
:
ug -v '^[ t]*#' myfile.sh
Untuk mencari myfile.cpp
untuk baris dengan FIXME
dan urgent
, tetapi tidak Scotty
:
ugrep FIXME myfile.cpp | ugrep urgent | ugrep -v Scotty
Sama, tetapi menggunakan -%
untuk pertanyaan boolean:
ug -% 'FIXME urgent -Scotty' myfile.cpp
Untuk mencari desimal menggunakan pola d+
yang tidak dimulai dengan 0
menggunakan pola negatif 0d+
dan tidak termasuk 555
:
ug -e 'd+' -N '0d+' -N 555 myfile.cpp
Untuk mencari kata -kata yang dimulai dengan disp
tanpa mencocokkan display
dalam file myfile.py
dengan menggunakan "pola negatif" -N '/<display>'
di mana -N
menentukan pola negatif tambahan untuk melewatkan kecocokan:
ug -e '<disp' -N '<display>' myfile.py
Untuk mencari baris dengan display
kata dalam file myfile.py
melewatkan kata ini dalam string dan komentar, di mana -f
menentukan pola dalam file yang merupakan pola yang telah ditentukan dalam kasus ini:
ug -n -w 'display' -f python/zap_strings -f python/zap_comments myfile.py
Untuk menampilkan garis yang bukan garis kosong:
ug -x -e '.*' -N 'h*' myfile.py
Sama, tetapi menggunakan -v
dan -x
dengan h*
, yaitu pola ^h*$
:
ug -v -x 'h*' myfile.py
Untuk mendaftar secara rekursif semua file Python yang tidak berisi display
kata, memungkinkan kata terjadi di string dan komentar:
ug -RL -tPython -w 'display' -f python/zap_strings -f python/zap_comments
? Kembali ke daftar isi
--encoding=ENCODING
The encoding format of the input. The default ENCODING is binary
and UTF-8 which are the same. Note that option -U specifies binary
PATTERN matching (text matching is the default.)
File biner, ASCII dan UTF-8 tidak memerlukan opsi ini untuk mencari mereka. Juga file UTF-16 dan UTF-32 tidak memerlukan opsi ini untuk mencari mereka, dengan asumsi bahwa file UTF-16 dan UTF-32 dimulai dengan BOM UTF (tanda pesanan byte) seperti biasa. Pengkodean file lainnya memerlukan opsi --encoding=ENCODING
:
pengkodean | parameter |
---|---|
ASCII | tidak ada |
UTF-8 | tidak ada |
UTF-16 dengan bom | tidak ada |
UTF-32 dengan bom | tidak ada |
UTF-16 Be W/O BOM | UTF-16 atau UTF-16BE |
UTF-16 LE W/O BOM | UTF-16LE |
UTF-32 W/O BOM | UTF-32 atau UTF-32BE |
UTF-32 W/O BOM | UTF-32LE |
Latin-1 | LATIN1 atau ISO-8859-1 |
ISO-8859-1 | ISO-8859-1 |
ISO-8859-2 | ISO-8859-2 |
ISO-8859-3 | ISO-8859-3 |
ISO-8859-4 | ISO-8859-4 |
ISO-8859-5 | ISO-8859-5 |
ISO-8859-6 | ISO-8859-6 |
ISO-8859-7 | ISO-8859-7 |
ISO-8859-8 | ISO-8859-8 |
ISO-8859-9 | ISO-8859-9 |
ISO-8859-10 | ISO-8859-10 |
ISO-8859-11 | ISO-8859-11 |
ISO-8859-13 | ISO-8859-13 |
ISO-8859-14 | ISO-8859-14 |
ISO-8859-15 | ISO-8859-15 |
ISO-8859-16 | ISO-8859-16 |
Mac (cr = newline) | MAC |
Macroman (CR = Newline) | MACROMAN |
Ebcdic | EBCDIC |
Kode DOS Halaman 437 | CP437 |
Kode DOS Halaman 850 | CP850 |
Kode DOS Halaman 858 | CP858 |
Kode Windows Halaman 1250 | CP1250 |
Windows Code Page 1251 | CP1251 |
Windows Code Page 1252 | CP1252 |
Windows Code Page 1253 | CP1253 |
Windows Code Page 1254 | CP1254 |
Windows Code Page 1255 | CP1255 |
Windows Code Page 1256 | CP1256 |
Windows Code Page 1257 | CP1257 |
Windows Code Page 1258 | CP1258 |
KOI8-R | KOI8-R |
Koi8-u | KOI8-U |
KOI8-RU | KOI8-RU |
Perhatikan bahwa pola Regex selalu ditentukan dalam UTF-8 (termasuk ASCII). Untuk mencari file biner dengan pola biner, lihat mencari dan menampilkan file biner dengan -u, -w, dan -x.
Untuk mendaftar secara rekursif semua file yang adalah ASCII (yaitu 7-bit):
ug -L '[^[:ascii:]]'
Untuk mendaftar secara rekursif semua file yang non-ASCII, yaitu file UTF-8, UTF-16, dan UTF-32 dengan karakter unicode non-ASCII (U+0080 dan lebih tinggi):
ug -l '[^[:ascii:]]'
Untuk memeriksa apakah suatu file berisi unicode non-ASCII (U+0080 dan lebih tinggi):
ug -q '[^[:ascii:]]' myfile && echo "contains Unicode"
Untuk menghapus karakter unicode yang tidak valid dari file (perhatikan bahwa -o
mungkin tidak berfungsi karena data biner terdeteksi dan ditolak dan newline ditambahkan, tetapi --format="%o%
tidak memeriksa biner dan menyalin kecocokan" apa adanya " ):
ug "[p{Unicode}n]" --format="%o" badfile.txt
Untuk membuat daftar file secara rekursif dengan konten UTF yang tidak valid (yaitu urutan atau file UTF-8 yang tidak valid atau file yang berisi poin kode UTF-8/16/32 yang berada di luar rentang Unicode yang valid) dengan mencocokkan titik kode apa pun dengan .
dan dengan menggunakan pola negatif -N 'p{Unicode}'
untuk mengabaikan setiap karakter unicode yang valid:
ug -l -e '.' -N 'p{Unicode}'
Untuk menampilkan garis yang berisi emoji wajah tertawa:
ug '[?-?]' emojis.txt
Hasil yang sama diperoleh dengan menggunakan x{hhhh}
untuk memilih rentang karakter unicode:
ug '[x{1F600}-x{1F60F}]' emojis.txt
Untuk menampilkan garis yang berisi nama Gödel (atau Goedel), Escher, atau Bach:
ug 'G(ö|oe)del|Escher|Bach' GEB.txt wiki.txt
Untuk mencari lorem
di huruf besar atau atas dalam file UTF-16 yang ditandai dengan BOM UTF-16:
ug -iw 'lorem' utf16lorem.txt
Untuk mencari utf16lorem.txt ketika file ini tidak memiliki BOM UTF-16, menggunakan --encoding
:
ug --encoding=UTF-16 -iw 'lorem' utf16lorem.txt
Untuk mencari file spanish-iso.txt
dikodekan dalam ISO-8859-1:
ug --encoding=ISO-8859-1 -w 'año' spanish-iso.txt
? Kembali ke daftar isi
-o, --only-matching
Output only the matching part of lines. If -A, -B or -C is
specified, fits the match and its context on a line within the
specified number of columns.
Beberapa baris dapat dicocokkan dengan pola yang cocok dengan karakter baru. Gunakan opsi -o
untuk mengeluarkan kecocokan saja, bukan baris lengkap yang cocok.
Untuk mencocokkan istirahat garis n
, sertakan n
dalam pola agar sesuai dengan karakter LF. Jika Anda ingin mencocokkan istirahat garis rn
dan n
, gunakan r?n
atau cukup gunakan R
untuk mencocokkan jeda garis unicode rn
, r
, v
, f
, n
, u +0085, U+2028 dan U+2029.
Untuk mencocokkan C/C ++ /*...*/
Komentar Multi-Line:
ug '/*(.*n)*?.**+/' myfile.cpp
Untuk mencocokkan komentar C/C ++ menggunakan pola c/comments
yang telah ditentukan dengan -fc/comments
, terbatas pada bagian yang cocok hanya dengan opsi -o
:
ug -of c/comments myfile.cpp
Sama seperti sed -n '/begin/,/end/p'
: untuk mencocokkan semua garis antara garis yang berisi begin
dan baris pertama setelah itu berisi end
, menggunakan pengulangan malas:
ug -o '.*begin(.|n)*?end.*' myfile.txt
? Kembali ke daftar isi
-A NUM, --after-context=NUM
Output NUM lines of trailing context after matching lines. Places
a --group-separator between contiguous groups of matches. If -o is
specified, output the match with context to fit NUM columns after
the match or shortens the match. See also options -B, -C and -y.
-B NUM, --before-context=NUM
Output NUM lines of leading context before matching lines. Places
a --group-separator between contiguous groups of matches. If -o is
specified, output the match with context to fit NUM columns before
the match or shortens the match. See also options -A, -C and -y.
-C NUM, --context=NUM
Output NUM lines of leading and trailing context surrounding each
matching line. Places a --group-separator between contiguous
groups of matches. If -o is specified, output the match with
context to fit NUM columns before and after the match or shortens
the match. See also options -A, -B and -y.
-y, --any-line
Any line is output (passthru). Non-matching lines are output as
context with a `-' separator. See also options -A, -B, and -C.
--width[=NUM]
Truncate the output to NUM visible characters per line. The width
of the terminal window is used if NUM is not specified. Note that
double wide characters in the output may result in wider lines.
-o, --only-matching
Output only the matching part of lines. If -A, -B or -C is
specified, fits the match and its context on a line within the
specified number of columns.
Untuk menampilkan dua baris konteks sebelum dan sesudah garis yang cocok:
ug -C2 'FIXME' myfile.cpp
Untuk menunjukkan tiga baris konteks setelah garis yang cocok:
ug -A3 'FIXME.*' myfile.cpp:
Untuk menampilkan satu baris konteks sebelum setiap baris pencocokan dengan definisi fungsi C (nama C adalah non-Usicode):
ug -B1 -f c/functions myfile.c
Untuk menampilkan satu baris konteks sebelum setiap baris pencocokan dengan definisi fungsi C ++ (nama C ++ mungkin unicode):
ug -B1 -f c++/functions myfile.cpp
Untuk menampilkan garis non -pencocokan sebagai konteks untuk garis yang cocok dengan -y
:
ug -y -f c++/functions myfile.cpp
Untuk menampilkan hexdump dari garis yang cocok dengan satu baris konteks hexdump:
ug -C1 -UX 'xaaxbbxcc' a.out
Konteks dalam satu baris ditampilkan dengan opsi -o
dengan opsi konteks:
ug -o -C20 'pattern' myfile.cpp
Sama, tetapi dengan output yang cantik dengan judul, nomor baris dan nomor kolom ( -k
) dan menampilkan konteks:
ug --pretty -oC20 'pattern' myfile.cpp
? Kembali ke daftar isi
-f FILE, --file=FILE
Read newline-separated patterns from FILE. White space in patterns
is significant. Empty lines in FILE are ignored. If FILE does not
exist, the GREP_PATH environment variable is used as path to FILE.
If that fails, looks for FILE in /usr/local/share/ugrep/pattern.
When FILE is a `-', standard input is read. This option may be
repeated.
--ignore-files[=FILE]
Ignore files and directories matching the globs in each FILE that
is encountered in recursive searches. The default FILE is
`.gitignore'. Matching files and directories located in the
directory of the FILE and in subdirectories below are ignored.
Globbing syntax is the same as the --exclude-from=FILE gitignore
syntax, but files and directories are excluded instead of only
files. Directories are specifically excluded when the glob ends in
a `/'. Files and directories explicitly specified as command line
arguments are never ignored. This option may be repeated to
specify additional files.
-g GLOBS, --glob=GLOBS
Search only files whose name matches the specified comma-separated
list of GLOBS, same as --include='glob' for each `glob' in GLOBS.
When a `glob' is preceded by a `!' or a `^', skip files whose name
matches `glob', same as --exclude='glob'. When `glob' contains a
`/', full pathnames are matched. Otherwise basenames are matched.
When `glob' ends with a `/', directories are matched, same as
--include-dir='glob' and --exclude-dir='glob'. A leading `/'
matches the working directory. This option may be repeated and may
be combined with options -M, -O and -t to expand searches. See
`ugrep --help globs' and `man ugrep' section GLOBBING for details.
-O EXTENSIONS, --file-extension=EXTENSIONS
Search only files whose filename extensions match the specified
comma-separated list of EXTENSIONS, same as --include='*.ext' for
each `ext' in EXTENSIONS. When `ext' is preceded by a `!' or a
`^', skip files whose filename extensions matches `ext', same as
--exclude='*.ext'. This option may be repeated and may be combined
with options -g, -M and -t to expand the recursive search.
-t TYPES, --file-type=TYPES
Search only files associated with TYPES, a comma-separated list of
file types. Each file type corresponds to a set of filename
extensions passed to option -O and filenames passed to option -g.
For capitalized file types, the search is expanded to include files
with matching file signature magic bytes, as if passed to option
-M. When a type is preceded by a `!' or a `^', excludes files of
the specified type. This option may be repeated.
--stats
Output statistics on the number of files and directories searched,
and the inclusion and exclusion constraints applied.
Jenis file terdaftar dengan ugrep -tlist
. Daftar ini didasarkan pada ekstensi nama file dan "ajaib byte". Jika Anda memiliki jenis file yang tidak terdaftar, gunakan opsi -O
dan/atau -M
. Anda mungkin ingin mendefinisikan alias, misalnya alias ugft='ugrep -Oft'
sebagai singkatan untuk mencari file dengan sufiks nama file .ft
.
Untuk secara rekursif menampilkan definisi fungsi dalam file C/C ++ ( .h
, .hpp
, .c
, .cpp
dll.) Dengan nomor baris dengan -tc++
, -o
, -n
, dan -f c++/functions
:
ug -on -tc++ -f c++/functions
Untuk secara rekursif menampilkan definisi fungsi di file .c
dan .cpp
dengan nomor baris dengan -Oc,cpp
, -o
, -n
, dan -f c++/functions
:
ug -on -Oc,cpp -f c++/functions
Untuk mendaftar secara rekursif semua file shell dengan -tShell
agar mencocokkan ekstensi nama file dan file dengan shell shebangs, kecuali file dengan akhiran .sh
:
ug -l -tShell -O^sh ''
Untuk mendaftar secara rekursif semua file non -shell dengan -t^Shell
:
ug -l -t^Shell ''
Untuk mendaftar secara rekursif semua file shell dengan shell shebangs yang tidak memiliki ekstensi nama file shell:
ug -l -tShell -t^shell ''
Untuk mencari baris dengan FIXME
dalam komentar C/C ++, tidak termasuk FIXME
dalam string multi-line:
ug -n 'FIXME' -f c++/zap_strings myfile.cpp
Untuk membaca pola TODO
dan FIXME
dari input standar untuk mencocokkan garis dalam input, sementara tidak termasuk kecocokan dalam string C ++:
ug -on -f - -f c++/zap_strings myfile.cpp <<END
TODO
FIXME
END
Untuk menampilkan elemen XML dan tag atribut dalam file XML, terbatas pada bagian yang cocok dengan -o
, tidak termasuk tag yang ditempatkan di (multi -line) komentar:
ug -o -f xml/tags -f xml/zap_comments myfile.xml
? Kembali ke daftar isi
-z, --decompress
Search compressed files and archives. Archives (.cpio, .pax, .tar)
and compressed archives (e.g. .zip, .7z, .taz, .tgz, .tpz, .tbz,
.tbz2, .tb2, .tz2, .tlz, .txz, .tzst) are searched and matching
pathnames of files in archives are output in braces. When used
with option --zmax=NUM, searches the contents of compressed files
and archives stored within archives up to NUM levels. If -g, -O,
-M, or -t is specified, searches files stored in archives whose
filenames match globs, match filename extensions, match file
signature magic bytes, or match file types, respectively.
Supported compression formats: gzip (.gz), compress (.Z), zip, 7z,
bzip2 (requires suffix .bz, .bz2, .bzip2, .tbz, .tbz2, .tb2, .tz2),
lzma and xz (requires suffix .lzma, .tlz, .xz, .txz),
lz4 (requires suffix .lz4),
zstd (requires suffix .zst, .zstd, .tzst),
brotli (requires suffix .br),
bzip3 (requires suffix .bz3).
--zmax=NUM
When used with option -z (--decompress), searches the contents of
compressed files and archives stored within archives by up to NUM
expansion stages. The default --zmax=1 only permits searching
uncompressed files stored in cpio, pax, tar, zip and 7z archives;
compressed files and archives are detected as binary files and are
effectively ignored. Specify --zmax=2 to search compressed files
and archives stored in cpio, pax, tar, zip and 7z archives. NUM
may range from 1 to 99 for up to 99 decompression and de-archiving
steps. Increasing NUM values gradually degrades performance.
File dikompres dengan gzip ( .gz
), kompres ( .Z
), bzip2 ( .bz
, .bz2
, .bzip2
), lzma ( .lzma
), xz ( .xz
), lz4 ( .lz4
), zstd ( .zst
, .zstd
), brotli ( .br
) dan bzip3 ( .bz3
) dicari dengan Opsi -z
Ketika pustaka yang sesuai diinstal dan dikompilasi dengan UGrep. Opsi ini tidak memerlukan file untuk dikompresi. File yang tidak terkompresi dicari juga, meskipun lebih lambat.
Format kompresi lainnya dapat dicari dengan filter UGREP .
Arsip (CPIO, JAR, PAX, TAR, ZIP dan 7Z) dicari dengan opsi -z
. File reguler dalam arsip yang cocok adalah output dengan arsip pathnames terlampir dalam kawat gigi {
dan }
. Format tar yang didukung adalah V7, Ustar, GNU, Oldgnu, dan Pax. Format CPIO yang didukung adalah ODC, NewC, dan CRC. Tidak didukung adalah format CPIO biner lama yang tidak dapat dipotong. Format Arsip CPIO, TAR, dan PAX secara otomatis diakui dengan opsi -z
berdasarkan kontennya, terlepas dari akhiran nama file mereka.
Secara default, arsip tidak terkompresi yang disimpan dalam arsip ZIP juga dicari: semua file CPIO, PAX, dan tar yang disimpan dalam arsip ZIP dan 7Z secara otomatis dikenali dan dicari. Namun, secara default, file terkompresi yang disimpan dalam arsip tidak dikenali, misalnya file zip yang disimpan dalam file tar tidak dicari tetapi semua file dan arsip terkompresi dicari seolah -olah mereka adalah file biner tanpa mendekompresinya.
Tentukan --zmax=NUM
untuk mencari arsip yang berisi file dan arsip terkompresi hingga level NUM
. Nilai NUM
dapat berkisar dari 1 hingga 99 hingga 99 langkah dekompresi dan de-arskiving untuk memperluas hingga 99 arsip bersarang. Lebih besar --zmax=NUM
nilai menurunkan kinerja. Tidak mungkin Anda membutuhkan 99 karena --zmax=2
sudah cukup untuk sebagian besar kasus penggunaan praktis, seperti mencari file zip yang disimpan dalam file tar.
Ketika opsi -z
digunakan dengan opsi -g
, -O
, -M
, atau -t
, arsip dan file terkompresi dan tidak terkompresi yang cocok dengan kriteria pemilihan nama file (glob, ekstensi, byte ajaib, atau jenis file) dicari saja. Misalnya, ugrep -r -z -tc++
mencari file C ++ seperti arsip main.cpp
dan zip dan tar yang berisi file C ++ seperti main.cpp
. Juga termasuk dalam pencarian adalah file C ++ terkompresi seperti main.cpp.gz
dan main.cpp.xz
saat ada. Juga arsip CPIO, PAX, TAR, ZIP, dan 7Z saat ini dicari untuk file C ++ yang dikandungnya, seperti main.cpp
. Gunakan opsi --stats
untuk melihat daftar pola glob yang diterapkan untuk memfilter nama path file dalam pencarian rekursif dan saat mencari konten arsip.
Ketika opsi -z
digunakan dengan opsi -g
, -O
, -M
, atau -t
untuk mencari arsip CPIO, JAR, PAX, TAR, ZIP dan 7Z, file yang diarsipkan yang cocok dengan kriteria pemilihan nama file dicari saja.
Format GZIP, kompres, dan ZIP terdeteksi secara otomatis, yang berguna saat membaca data yang dikompresi GZIP dari input standar, misalnya input yang dialihkan dari pipa. Format kompresi lainnya memerlukan sufiks nama file: .bz
, .bz2
, atau .bzip2
untuk bzip2, .lzma
untuk lzma, .xz
untuk xz, .lz4
untuk lz4, .zst
atau .zstd
untuk zstd, .br
untuk brotli dan .bz3
untuk bzip3. Juga singkatan arsip tar terkompresi .taz
, .tgz
dan .tpz
untuk gzip, .tbz
, .tbz2
, .tb2
, dan .tz2
untuk bzip2, .tlz
untuk lzma, .txz
untuk xz, dan .tzst
untuk zstd diakui. Untuk mencari format ini dengan UGrep dari input standar, gunakan opsi --label='stdin.bz2'
untuk bzip2, --label='stdin.lzma'
untuk lzma, --label='stdin.xz'
untuk xz, --label='stdin.lz4
untuk lz4 dan --label='stdin.zst
untuk zstd dan sebagainya. Nama stdin
sewenang -wenang dan dapat dihilangkan:
format | Suffix nama file | Tar/Pax Archive Short Suffix | Sufiks dibutuhkan? | Ugrep dari Stdin | perpustakaan |
---|---|---|---|---|---|
gzip | .gz | .taz , .tgz , .tpz | TIDAK | otomatis | libz |
kompres | .Z | .taZ , .tZ | TIDAK | otomatis | bawaan |
ritsleting | .zip , .zipx , .ZIP | TIDAK | otomatis | libz | |
7zip | .7z | Ya | --label=.7z | bawaan | |
bzip2 | .bz , .bz2 , .bzip2 | .tb2 , .tbz , .tbz2 , .tz2 | Ya | --label=.bz2 | libbz2 |
LZMA | .lzma | .tlz | Ya | --label=.lzma | Liblzma |
xz | .xz | .txz | Ya | --label=.xz | Liblzma |
lz4 | .lz4 | Ya | --label=.lz4 | liblz4 | |
zstd | .zst , .zstd | .tzst | Ya | --label=.zst | libzstd |
Brotli | .br | Ya | --label=.br | libbrotlidec | |
BZIP3 | .bz3 | Ya | --label=.bz3 | libbzip3 |
Format GZIP, BZIP2, XZ, LZ4 dan ZSTD mendukung file terkompresi yang digabungkan. File terkompresi yang digabungkan dicari sebagai satu file tunggal.
Metode kompresi zip yang didukung disimpan (0), mengempis (8), BZIP2 (12), LZMA (14), XZ (95) dan ZSTD (93). Metode BZIP2, LZMA, XZ dan ZSTD mengharuskan UGREP untuk dikompilasi dengan pustaka kompresi yang sesuai.
Mencari arsip ZIP terenkripsi tidak didukung (mungkin dalam rilis mendatang, tergantung pada permintaan peningkatan).
Mencari arsip 7ZIP membutuhkan lebih banyak RAM dan lebih banyak waktu dibandingkan dengan metode lain. Implementasi 7ZIP LZMA SDK tidak mendukung streaming, membutuhkan file 7z yang dapat dicari secara fisik. Ini berarti bahwa file 7z tidak dapat dicari saat bersarang di dalam arsip. Yang terbaik adalah menghindari 7zip. Dukungan untuk 7ZIP dapat dinonaktifkan dengan ./build.sh --disable-7zip
untuk membangun uGrep.
Opsi -z
menggunakan utas untuk paralelisme tugas untuk mempercepat mencari file yang lebih besar dengan menjalankan dekompresor secara bersamaan dengan pencarian aliran yang didekompresi.
Untuk membuat daftar semua file non-kosong yang disimpan dalam arsip package.zip
.
ug --zmax=2 -z -l '' package.zip
Sama, tetapi hanya daftar file kode sumber Python, termasuk skrip yang memohon Python, dengan opsi -tPython
( ugrep -tlist
untuk detailnya):
ug --zmax=2 -z -l -tPython '' package.zip
Untuk mencari aplikasi Python yang didistribusikan sebagai file tar dengan dependensi mereka termasuk sebagai roda (file zip dengan kode python), mencari kata my_class
di app.tgz
:
ug --zmax=2 -z -tPython -w my_class app.tgz
Untuk secara rekursif mencari file C ++ termasuk file terkompresi untuk kata my_function
, saat melewatkan komentar C dan C ++:
ug -z -r -tc++ -Fw my_function -f cpp/zap_comments
Untuk mencari data terkompresi BZIP2, LZMA, XZ, LZ4 dan ZSTD pada input standar, opsi --label
dapat digunakan untuk menentukan ekstensi yang sesuai dengan format kompresi untuk memaksa dekompresi ketika ekstensi BZIP2 tidak tersedia untuk UGREP, misalnya: misalnya:
cat myfile.bz2 | ugrep -z --label='stdin.bz2' 'xyz'
Untuk mencari file main.cpp
di project.zip
untuk baris TODO
dan FIXME
:
ug -z -g main.cpp -w -e 'TODO' -e 'FIXME' project.zip
Untuk mencari Tarball project.tar.gz
untuk file C ++ dengan baris TODO
dan FIXME
:
ug -z -tc++ -w -e 'TODO' -e 'FIXME' project.tar.gz
Untuk mencari file yang cocok dengan glob *.txt
di project.zip
untuk license
kata dalam kasus apa pun (perhatikan bahwa argumen -g
glob harus dikutip):
ug -z -g '*.txt' -w -i 'license' project.zip
Untuk menampilkan dan halaman melalui semua file C ++ di Tarball project.tgz
:
ug --pager -z -tc++ '' project.tgz
Untuk mendaftar file yang cocok dengan GITIGNOR-gaya glob /**/projects/project1.*
di projects.tgz
, dengan memilih file yang berisi dalam arsip teks December 12
:
ug -z -l -g '/**/projects/project1.*' -F 'December 12' projects.tgz
Untuk melihat data meta -inf/manifest.mf dalam file jar dengan -Ojar
dan -OMF
untuk memilih file jar dan file mf di dalamnya ( -Ojar
diperlukan, jika tidak file jar akan dilewati meskipun kita bisa membacanya darinya Input standar sebagai gantinya):
ug -z -h -OMF,jar '' my.jar
Untuk mengekstrak file C ++ yang berisi FIXME
dari project.tgz
, kami menggunakan -m1
dengan --format="'%z '"
untuk menghasilkan daftar jalur path yang dipisahkan ruang yang terletak di arsip yang cocok dengan kata FIXME
:
tar xzf project.tgz `ugrep -z -l -tc++ --format='%z ' -w FIXME project.tgz`
Untuk melakukan pencarian kedalaman-pertama dengan find
, lalu gunakan cpio
dan ugrep
untuk mencari file:
find . -depth -print | cpio -o | ugrep -z 'xyz'
? Kembali ke daftar isi
--ignore-files[=FILE]
Ignore files and directories matching the globs in each FILE that
is encountered in recursive searches. The default FILE is
`.gitignore'. Matching files and directories located in the
directory of the FILE and in subdirectories below are ignored.
Globbing syntax is the same as the --exclude-from=FILE gitignore
syntax, but files and directories are excluded instead of only
files. Directories are specifically excluded when the glob ends in
a `/'. Files and directories explicitly specified as command line
arguments are never ignored. This option may be repeated to
specify additional files.
-M MAGIC, --file-magic=MAGIC
Only files matching the signature pattern MAGIC are searched. The
signature "magic bytes" at the start of a file are compared to
the MAGIC regex pattern. When matching, the file will be searched.
When MAGIC is preceded by a `!' or a `^', skip files with matching
MAGIC signatures. This option may be repeated and may be combined
with options -O and -t to expand the search. Every file on the
search path is read, making searches potentially more expensive.
-O EXTENSIONS, --file-extension=EXTENSIONS
Search only files whose filename extensions match the specified
comma-separated list of EXTENSIONS, same as --include='*.ext' for
each `ext' in EXTENSIONS. When `ext' is preceded by a `!' or a
`^', skip files whose filename extensions matches `ext', same as
--exclude='*.ext'. This option may be repeated and may be combined
with options -g, -M and -t to expand the recursive search.
-t TYPES, --file-type=TYPES
Search only files associated with TYPES, a comma-separated list of
file types. Each file type corresponds to a set of filename
extensions passed to option -O and filenames passed to option -g.
For capitalized file types, the search is expanded to include files
with matching file signature magic bytes, as if passed to option
-M. When a type is preceded by a `!' or a `^', excludes files of
the specified type. This option may be repeated.
-g GLOBS, --glob=GLOBS
Search only files whose name matches the specified comma-separated
list of GLOBS, same as --include='glob' for each `glob' in GLOBS.
When a `glob' is preceded by a `!' or a `^', skip files whose name
matches `glob', same as --exclude='glob'. When `glob' contains a
`/', full pathnames are matched. Otherwise basenames are matched.
When `glob' ends with a `/', directories are matched, same as
--include-dir='glob' and --exclude-dir='glob'. A leading `/'
matches the working directory. This option may be repeated and may
be combined with options -M, -O and -t to expand searches. See
`ugrep --help globs' and `man ugrep' section GLOBBING for details.
--stats
Output statistics on the number of files and directories searched,
and the inclusion and exclusion constraints applied.
Untuk mendaftar secara rekursif semua file yang dimulai dengan #!
Shebangs:
ug -l -M'#!' ''
Untuk mencantumkan semua file yang dimulai dengan #
tetapi tidak dengan #!
Shebangs:
ug -l -M'#' -M'^#!' ''
Untuk mencantumkan semua file Python secara rekursif (ekstensi .py
atau shebang) dengan -tPython
:
ug -l -tPython ''
Untuk mendaftar secara rekursif semua file non -shell dengan -t^Shell
:
ug -l -t^Shell ''
Untuk membuat daftar file python secara rekursif (ekstensi .py
atau shebang) yang memiliki pernyataan impor, termasuk file tersembunyi dengan -.
:
ug -l. -tPython -f python/imports
? Kembali ke daftar isi
-Z[best][+-~][MAX], --fuzzy=[best][+-~][MAX]
Fuzzy mode: report approximate pattern matches within MAX errors.
The default is -Z1: one deletion, insertion or substitution is
allowed. If `+`, `-' and/or `~' is specified, then `+' allows
insertions, `-' allows deletions and `~' allows substitutions. For
example, -Z+~3 allows up to three insertions or substitutions, but
no deletions. If `best' is specified, then only the best matching
lines are output with the lowest cost per file. Option -Zbest
requires two passes over a file and cannot be used with standard
input or Boolean queries. Option --sort=best orders matching files
by best match. The first character of an approximate match always
matches a character at the beginning of the pattern. To fuzzy
match the first character, replace it with a `.' or `.?'. Option
-U applies fuzzy matching to ASCII and bytes instead of Unicode
text. No whitespace may be given between -Z and its argument.
Awal dari suatu pola selalu cocok dengan karakter pertama dari kecocokan perkiraan sebagai strategi praktis untuk mencegah banyak kecocokan "acak" palsu untuk pola pendek. Ini juga sangat meningkatkan kecepatan pencarian. Buat karakter pertama opsional untuk mencocokkan secara opsional, misalnya p?attern
atau gunakan titik sebagai awal pola agar sesuai dengan karakter lebar (tapi ini lambat).
Line feed ( n
) and NUL (