Wie kann ich in vim eine gültige Eingabe für "xxd -r" machen, wenn ich ein Byte entferne?
Erstelle eine Datei mit dem Namentest
mit folgendem Inhalt:
0123456789abcdef0123456789abcdef
Ich möchte das erste @ entfern0
unter Verwendung von xxd. Öffne es mitvim -b test
dann renne:%!xxd
inside vim. Das Ergebnis ist
0000000: 3031 3233 3435 3637 3839 6162 6364 6566 0123456789abcdef
0000010: 3031 3233 3435 3637 3839 6162 6364 6566 0123456789abcdef
0000020: 0a .
Dann entferne ich den Hex-Code30
für das erste0
:
0000000: 31 3233 3435 3637 3839 6162 6364 6566 0123456789abcdef
0000010: 3031 3233 3435 3637 3839 6162 6364 6566 0123456789abcdef
0000020: 0a .
Dann laufe ich:%!xxd -r
, um das Hex zurückzulesen. Das Ergebnis ist
^@23456789abcdef^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
Das Ergebnis ist verstümmelt. Ich weiß, dass der Grund für den oben genannten Inhalt keine gültige xxd-Eingabe ist. Wenn ich die Zeilennummern und den Textteil entferne:
31 3233 3435 3637 3839 6162 6364 6566
3031 3233 3435 3637 3839 6162 6364 6566
0a
Der ich renne:%!xxd -r -p
, um das Hex zurückzulesen. Und das Ergebnis ist richtig:
123456789abcdef0123456789abcdef
Gibt es eine bessere Möglichkeit, diesen Job mit vim und xxd zu erledigen? Ein besserer Weg bedeutet weniger Bearbeitung, um eine gültige Eingabe für @ zu machexxd -r
.