Mengajukan:
O000000667520994000000074720121112000000N^@^@^@
Saya menggunakan perintah di bawah ini tetapi tidak berhasil.
grep "^@^@^@" *
Mengajukan:
O000000667520994000000074720121112000000N^@^@^@
Saya menggunakan perintah di bawah ini tetapi tidak berhasil.
grep "^@^@^@" *
Jawaban:
Anda dapat memahami karakter apa pun termasuk karakter kontrol / tidak dapat dicetak dalam mode perl-regexp (-P) dengan kode hex-nya:
grep -Pa '\x00' ...
grep -Pv '\x00' filetidak berfungsi di Cygwin ...
-a(kadang-kadang?) bahkan tidak menemukan polanya. Terima kasih! Mungkin bisa membantu @pai juga.
^@bukan karat ^dan tanda @, itu satu karakter. Begitulah cara beberapa program menampilkan karakter NUL — nilai ASCII 0, juga dikenal sebagai \0dalam C.
Di sini saya telah membuat file dengan byte NUL di dalamnya. † Perhatikan bahwa saya menggunakan cat -vuntuk menunjukkan karakter yang tidak dicetak.
$ cat -v blah
hello
null^@
hi
$ hexdump -C blah
00000000 68 65 6c 6c 6f 0a 6e 75 6c 6c 00 0a 68 69 0a |hello.null..hi.|
0000000f
Grep kesulitan menemukan NUL karena mereka digunakan untuk mengakhiri string dalam C. Sed, bagaimanapun, dapat melakukan pekerjaan:
$ sed -n '/\x0/p' blah
null
$ sed -n '/\x0/p' blah | cat -v
null^@
† In vi, dalam mode insert tekan Ctrl- V, Ctrl- Shift- @untuk memasukkan byte nol.
Dalam bash Anda dapat menambahkan karakter khusus ketika diawali dengan C-qatau C-v. Jadi Anda bisa, misalnya
grep 'Ctrl-vCtrl-a' file.txt
String pencarian harus dibaca sebagai control key+ character v, diikuti oleh control key+ character a, yang mencari nilai ASCII, SOH (01). Sayangnya ini tidak bekerja untuk karakter NUL.
^ @ adalah karakter NUL. Apa yang ingin Anda lakukan dengan baris file yang berisi itu?
Anda dapat melihat /programming/2398393/identifying-and-removing-null-characters-in-unix yang membahas masalah serupa.
Karakter ^ @ adalah karakter NUL, jadi saya khawatir karakter itu tidak dapat dipahami secara langsung.
Pilihan terbaik Anda mungkin menulis program sederhana yang mencari urutan byte ini.
Atau Anda dapat mencoba mengubahnya menjadi beberapa bentuk heksadesimal dump ( od, xxdatau lebih) dan grep ke outputnya. Tapi terus terang, akan sulit untuk memperbaikinya.
-aopsi, jikagrepdianggap itu adalah data biner dan tidak akan menampilkan garis yang cocok.