Saya mencari alat tipe grep untuk mencari string literal murni. Saya sedang mencari terjadinya baris file log, sebagai bagian dari baris dalam file log terpisah. Teks pencarian dapat berisi semua jenis karakter khusus regex, misalnya []().*^$-\
.
Apakah ada utilitas pencarian Unix yang tidak akan menggunakan regex, tetapi hanya mencari kemunculan literal dari sebuah string?
grep
mencari string literal?" alih-alih "Apakah ada hal sepertigrep
itu yang dapat mencari string literal?" Obeng pipih dapat dipasang pada kepala sekrup Philips, Anda tahu;)
Jawaban:
Anda dapat menggunakan grep untuk itu, dengan opsi -F.
sumber
-e
opsi pengulangan . Seperti ini:grep -F -e "fixed1" -e "fixed2" -e "fixed3" -e "fixed4"
. Tidak diperlukan baris baru;)fgrep
digunakan.grep --include=\*.php -FRn -e "$$"
Menggunakan quout tunggal memberi saya hasil yang diinginkan:grep --include=\*.php -FRn -e '$$'
$
dan beberapa karakter lain yang spesial dan akan diganti dengan bash setelah Anda menekan enter dan sebelumgrep
(atau perintah apa pun) dijalankan. Anda dapat memberi tahu bash untuk membiarkan semua karakter (kecuali satu kutipan) tidak tersentuh dengan mengapitnya di dalam tanda kutip tunggal. Jika Anda perlu mengetikkan satu kutipan lakukan seperti ini'I'\''m special'
Itu salah satu
fgrep
ataugrep -F
yang tidak akan melakukan ekspresi reguler.fgrep
identik dengangrep -F
tetapi saya lebih suka tidak perlu khawatir tentang argumen, secara intrinsik malas :-)sumber
egrep
danfgrep
tidak ditentukan oleh standar POSIX;grep -F
dangrep -E
yangLulus
-F
kegrep
.sumber
Anda juga dapat menggunakan awk, karena memiliki kemampuan untuk menemukan string tetap, serta kemampuan pemrograman, misalnya saja
sumber
keluaran
sumber