Ich bekomme aus einem Logfile strings die leider unter Umständen eine oder mehrere Nullen enthalten können. Da ich mit dem String ansonsten auch Stringverarbeitung machen möchte, kommen Operationen wie ".", print usw. durcheinander. Daher möchte ich die Nullen entfernen. Habe schon sowas wie s/\0/g /; probiert. Aber es geht nicht. Anscheinend bleibt die Null drin. Leider finde ich dazu nichts bei google.
Vielleicht hilft Dir ja der folgende Codeschnippel erst mal weiter:
1 | #! /bin/perl
|
2 | $string = "Blubb000Laber0Blubb"; |
3 | $string =~ s/0*//g; |
4 | print $string; |
Gruß, Stefan
Achja, geht natürlich auch mit "\0"...
1 | #! /bin/perl
|
2 | $string = "Blubb\0\0\0La\0ber\0Blubb"; |
3 | $string =~ s/\0*//g; |
4 | print $string; |
Tschuldigung. Ich meinte nicht die ASCII '0' mit Hex-Wert 0x30 sondern ASCII <NUL> mit Hex-Wert 0x00.
Urbs schrieb: > Tschuldigung. > Ich meinte nicht die ASCII '0' mit Hex-Wert 0x30 sondern ASCII <NUL> mit > Hex-Wert 0x00. Das habe ich mir im Nachhinein auch gedacht und habe mein zweites Posting hinterher geschoben. ;-) Gruß, Stefan
Da hat sichs überschnitten. s/\0/ / hatte ich probiert. Leider scheint ein anderes Problem die Ursache zu sein. Danke für die Tips.
Urbs schrieb: > hatte ich probiert. Leider scheint ein anderes Problem die Ursache zu > sein. Dann poste Doch bitte einmal einen String im Rohformat. Das sollte schon zu schaffen sein...
:-) Ich kann doch hier keine Nullen posten und Andreas wird dann böse. Nein, mit "ein anderes Problem" meinte ich, das mein Fehler wohl zwischen den Ohren sitzt. Ich habe da einen ganz merkwürdigen Effekt. Ich mache über alle Inputzeilen ein Matching. while(<>) { if($_ =~ /abc (.*)/) { } print $1 . "\n"; } Ca. 10 Zeilen werden am Anfang gematcht und ich habe in $1 was drinstehen. Dann auf einmal wird zwar der Ausdruck noch gematch, aber in $1 steht nichts mehr drin. Dann, nach einigen Zeilen gehts wieder. In den Zeilen stehen auch so Sachen wie 0x94 oder 0x80 drin. Aber das steht auch in den Zeilen, bei denen vorher in $1 was drinstand. Ich blicks gerade nicht.
Mit allen Zeichen geht es auch nicht. if($_ =~ /abc ([0x00-0xFF]*)/) {
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.