Letztes CRLF (dezimal 013, 010) des stdin löschen

11/02/2010 - 14:15 von Michael Scheer | Report spam
Hallo,

ich hatte etwas harmolses vor. Ich schicke Text durch eine Pipe, am
Ende durch GPG und wollte dann in meinem jugendlichen Leichtsinn das
abschließende CRLF (es sind Unix-Tools unter Windows) löschen. Um es
anschaulich zu zeigen: Ich will aus "END PGP MESSAGE--CRLF" "END
PGP MESSAGE--" machen. Ich breche mir den Arsch ab dabei.

-tr (gnu, 2.0) fàllt weg, da es Zeichenmengen löschen/tauschen kann.
Also "tr '-\015\012' '-' ersetzt mir jedes einzelne Zeichen "\015" und
"\012" (dies sind hier die Oktal-Repràsentationen) mit "-".
-sed (4.07): Kann man irgendwie vergessen. Ich kann nicht auf
BINDESTRICH-CR-LF matchen. Das scheint wohl daran zu liegen, dass es
zeilenweise arbeitet.
- perl (5.10.1) war meine große Hoffnung. Genauer "perl -pe 's/
\015\012//'" - es matcht einfach mein CRLF (auch hier wieder in Oktal)
nicht.

Auf wollen auch alle Beteiligten nicht matchen.

Wer gibt mir einen guten Tipp?

Danke
MS
 

Lesen sie die antworten

#1 Christian Brandt
11/02/2010 - 16:35 | Warnen spam
Am 11.02.2010 14:15, schrieb Michael Scheer:

- perl (5.10.1) war meine große Hoffnung. Genauer "perl -pe 's/
\015\012//'" - es matcht einfach mein CRLF (auch hier wieder in Oktal)
nicht.



Perl matcht zeilenweise, aber Dein zeilenumbruch ist ja halb in einer
und halb in der anderen Zeile, also mußt Du das Zeilenende für Regex
umstellen, z.B. mittels

$/=undef

Siehe http://www.perlunity.de/perl/forum/...489.shtml, da hat
einer fast das gleiche Problem.

Christian Brandt

Ähnliche fragen