Mengajukan:
O000000667520994000000074720121112000000N^@^@^@
Saya menggunakan perintah di bawah ini tetapi tidak berhasil.
grep "^@^@^@" *
Anda dapat memahami karakter apa pun termasuk karakter kontrol / tidak dapat dicetak dalam mode perl-regexp (-P) dengan kode hex-nya:
grep -Pa '\x00' ...
-a
opsi, jikagrep
dianggap itu adalah data biner dan tidak akan menampilkan garis yang cocok.grep -Pv '\x00' file
tidak 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\0
dalam C.Di sini saya telah membuat file dengan byte NUL di dalamnya. † Perhatikan bahwa saya menggunakan
cat -v
untuk menunjukkan karakter yang tidak dicetak.Grep kesulitan menemukan NUL karena mereka digunakan untuk mengakhiri string dalam C. Sed, bagaimanapun, dapat melakukan pekerjaan:
† In vi, dalam mode insert tekan Ctrl- V, Ctrl- Shift- @untuk memasukkan byte nol.
sumber
Jika
grep -P
tidak berfungsi (mis. Pada OS X), coba ini:sumber
grep -Pa '\x00' ...
Dalam bash Anda dapat menambahkan karakter khusus ketika diawali dengan
C-q
atauC-v
. Jadi Anda bisa, misalnyaString pencarian harus dibaca sebagai
control key
+character v
, diikuti olehcontrol key
+character a
, yang mencari nilai ASCII, SOH (01). Sayangnya ini tidak bekerja untuk karakter NUL.sumber
^ @ 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.
sumber
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
,xxd
atau lebih) dan grep ke outputnya. Tapi terus terang, akan sulit untuk memperbaikinya.sumber