Saya memiliki file log (application.log) yang mungkin berisi string karakter normal & khusus berikut pada beberapa baris:
*^%Q&$*&^@$&*!^@$*&^&^*&^&
Saya ingin mencari nomor baris yang berisi string karakter khusus ini.
grep '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log
Perintah di atas tidak mengembalikan hasil apa pun.
Apa sintaks yang benar untuk mendapatkan nomor baris?
unix
search
grep
special-characters
Avinash Sonee
sumber
sumber
^@
: artinya^
diikuti oleh@
atau karakter nul?Jawaban:
Katakan
grep
untuk memperlakukan input Anda sebagai string tetap menggunakan-F
opsi.grep -F '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log
Opsi
-n
diperlukan untuk mendapatkan nomor baris,grep -Fn '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log
sumber
^
,$
,.
,*
dan\
. atau Anda juga bisa mencobanyafgrep
.fgrep
sama sepertigrep -F
.egrep '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log
?grep -rinF '-static'
cetakanInvalid option «t»
. Jawaban @ Mani berhasil , yaitugrep -rin "\-static"
.Yang berhasil untuk saya adalah:
grep -e '->'
-E berarti argumen berikutnya adalah pola, dan tidak akan ditafsirkan sebagai argumen.
Dari: http://www.linuxquestions.org/questions/programming-9/how-to-grep-for-string-769460/
sumber
-
, lihat juga stackoverflow.com/questions/2427913/…Catatan terkait
Untuk grep untuk carriage return, yaitu
\r
karakter, atau0x0d
, kita bisa melakukan ini:Cara lainnya, gunakan
printf
, atauecho
, untuk kompatibilitas POSIXDan kita bisa menggunakan
hexdump
, atauless
untuk melihat hasilnya:Mengenai penggunaan
$'\r'
dan karakter lain yang didukung, lihat Bash Manual> ANSI-C Quoting :sumber
grep -n "\*\^\%\Q\&\$\&\^\@\$\&\!\^\@\$\&\^\&\^\&\^\&" test.log 1:*^%Q&$&^@$&!^@$&^&^&^& 8:*^%Q&$&^@$&!^@$&^&^&^& 14:*^%Q&$&^@$&!^@$&^&^&^&
sumber
Anda dapat mencoba menghapus karakter alfanumerik dan spasi. Dan kemudian gunakan
-n
akan memberi Anda nomor baris. Coba ikuti:grep -vn "^[a-zA-Z0-9 ]*$" application.log
sumber
Coba vi dengan opsi -b, ini akan menampilkan karakter akhir baris khusus (saya biasanya menggunakannya untuk melihat akhiran baris windows dalam file txt pada OS unix)
Tetapi jika Anda menginginkan solusi dengan skrip jelas vi tidak akan berfungsi sehingga Anda dapat mencoba opsi -f atau -e dengan grep dan menyalurkan hasilnya ke sed atau awk. Dari halaman manual grep:
Matcher Selection -E, --extended-regexp Tafsirkan POLA sebagai ekspresi reguler yang diperluas (ERE, lihat di bawah). (-E ditentukan oleh POSIX.)
sumber