Dosya:
O000000667520994000000074720121112000000N^@^@^@
Aşağıdaki komutu kullandım ama işe yaramadı.
grep "^@^@^@" *
Dosya:
O000000667520994000000074720121112000000N^@^@^@
Aşağıdaki komutu kullandım ama işe yaramadı.
grep "^@^@^@" *
Yanıtlar:
Perl-regexp modunda (-P) kontrol / yazdırılamayan karakterler de dahil olmak üzere herhangi bir karakter için hex kodunu kullanabilirsiniz.
grep -Pa '\x00' ...
grep -Pv '\x00' file
...
-a
(bazen?) desen bile bulamaz. Teşekkürler! Pbies de yardımcı olabilir.
^@
Karat ^
ve tabelasını değil @
, bir karakter. Bazı programların NUL karakterini göstermesi - ASCII değer 0, \0
C olarak da bilinir .
Burada NUL baytında bir dosya oluşturdum. † Yazdırılmayan cat -v
karakterleri göstermek için kullandığımı fark et.
$ 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, C dizelerini sonlandırmak için kullanıldıklarından NUL bulmakta zorlanıyor. Ancak Sed, işi yapabilir:
$ sed -n '/\x0/p' blah
null
$ sed -n '/\x0/p' blah | cat -v
null^@
† vi modunda , boş mod girmek için Ctrl- V, Ctrl- Shift- düğmelerine basın @.
Eğer grep -P
işi (örneğin OS X) değil, şunu deneyin:
grep -E '\x00' ...
grep -Pa '\x00' ...
Bash'de C-q
veya ile ön eklendiğinde özel karakterler ekleyebilirsiniz C-v
. Mesela örneğin
grep 'Ctrl-vCtrl-a' file.txt
Arama dizgisi control key
+ character v
, ardından ASCII SOH (01) değerini arayan control key
+ ile okunmalıdır character a
. Ne yazık ki bu NUL karakteri için işe yaramıyor.
^ @, NUL karakteridir. Dosyalarınızın içindeki satırlarla ne yapmak istiyorsunuz?
Benzer bir mesele ile ilgilenen /programming/2398393/identifying-and-removing-null-characters-in-unix adresini ziyaret edebilirsiniz .
Karakter ^ @, NUL karakteridir, bu yüzden doğrudan çizilemeyeceğinden korkuyorum.
En iyi seçeneğiniz muhtemelen bu bayt sırasını arayan basit bir program yazmak olabilir.
Alternatif olarak, onu onaltılık bir döküme ( od
, xxd
ya da öylesine) dönüştürmek ve çıktısını almak için deneyebilirsiniz . Ama açık konuşursak, doğru yapmak zor olur.
-a
Seçenek eklemek isteyebilirsiniz , aksi takdirdegrep
ikili veri olduğunu düşünür ve eşleşen satırları görüntülemez.