Datei:
O000000667520994000000074720121112000000N^@^@^@
Ich habe den folgenden Befehl verwendet, aber er funktioniert nicht.
grep "^@^@^@" *
Sie können im Perl-Regexp-Modus (-P) anhand des Hex-Codes nach beliebigen Zeichen suchen, einschließlich Steuerzeichen und nicht druckbaren Zeichen:
grep -Pa '\x00' ...
-a
Option hinzufügen , dagrep
dies ansonsten Binärdaten sind und die übereinstimmenden Zeilen nicht angezeigt werden.grep -Pv '\x00' file
funktioniert nicht in Cygwin ...-a
(manchmal?) findet es nicht einmal das Muster. Vielen Dank! Könnte auch @pbies helfen.^@
ist kein Karat^
und At -Zeichen@
, es ist ein Charakter. So zeigen einige Programme das Zeichen NUL an - ASCII-Wert 0, auch bekannt als\0
C.Hier habe ich eine Datei mit einem NUL-Byte erstellt. † Beachten Sie, dass ich
cat -v
nicht druckbare Zeichen anzeige.Grep hat Probleme, NULs zu finden, da sie zum Beenden von Strings in C. Sed verwendet werden.
† Drücken Sie in vi im Einfügemodus Ctrl- V, Ctrl- Shift- @, um ein Null-Byte einzufügen.
quelle
Wenn
grep -P
dies nicht funktioniert (z. B. unter OS X), versuchen Sie Folgendes:quelle
grep -Pa '\x00' ...
In bash können Sie Sonderzeichen mit dem Präfix
C-q
oder hinzufügenC-v
. So können Sie zum BeispielDie Suchzeichenfolge sollte als
control key
+ gelesen werdencharacter v
, gefolgt voncontrol key
+character a
, das nach dem ASCII-Wert SOH (01) sucht. Leider funktioniert dies nicht für den NUL-Charakter.quelle
^ @ ist das NUL-Zeichen. Was möchten Sie mit den Zeilen Ihrer Dateien tun, die sie enthalten?
Sie können einen Blick auf /programming/2398393/identifying-and-removing-null-characters-in-unix werfen, der sich mit einem ähnlichen Problem befasst.
quelle
Das Zeichen ^ @ ist das NUL-Zeichen, daher befürchte ich, dass es nicht direkt abgegriffen werden kann.
Ihre beste Option wäre wahrscheinlich, ein einfaches Programm zu schreiben, das nach dieser Folge von Bytes sucht.
Alternativ können Sie versuchen, es in irgendeine Form von Hex - Dump (zu konvertieren
od
,xxd
oder so) und grep in den Ausgang davon. Aber ehrlich gesagt, wäre es schwierig, es richtig zu machen.quelle