2017-05-31 7 views
0

Ich muss Perl (v5.10) verwenden, um Strings aus einer anderen Anwendung mit eingebetteten Oktalwerten für Leerzeichen, Kommas und andere nicht alphanumerische Zeichen zu verarbeiten.Wie konvertiert man Oktalzeichenwerte in einer gemischten Zeichenfolge mit Perl?

Zum Beispiel: Dies - "11624 \ 0040SE \ 00405. \ 0040St \ 0054 \ 0040Suite \ 0040100", sollte dies sein - "11624 SE 5th St, Suite 100".

Ich kann erreichen, was ich auf der Linux-Kommandozeile mit "Echo-e" suche, aber ich muss in der Lage sein, in einem Perl-Skript zu verarbeiten und zu manipulieren.

axiar @ formdev $ echo -e "11624 \ 0040SE \ 00405. \ 0040St \ 0054 \ 0040Suite \ 0040100"

11624 SE 5th St, Suite 100

ich im String haben gesucht :: Escape-Modul, aber es scheint nicht zu tun, was ich denke, es sollte.

Ich habe zahlreiche Google- und Stack-Overflow-Suchen nach ähnlichen Fragen/Antworten durchgeführt und bin noch nie auf solche gestoßen.

Ihre fachkundige Hilfe wäre willkommen.

Antwort

0

Diese Art der Sache ist in der Regel leicht genug, um in einer Regex zu tun:

$ perl -E 'say shift =~ s[\\0([0-7]{1,3})][chr oct $1]egr' '11624\0040SE\00405th\0040St\0054\0040Suite\0040100' 11624 SE 5th St, Suite 100

einfacher Wahrscheinlich auf diese Weise.

+0

Es sieht so aus, als ob der oktale Teil immer 3 Zeichen lang ist, also würde ich '\\ 0 ([0-7] {1,3})' in '\\ 0 ([0-7] {3} ändern) 'stattdessen. – AntonH

+0

Vielen Dank! arbeitete wie eine Perl-Regex. Ich habe mit dem SW-Anbieter bestätigt und der oktale Teil wird immer 3 Ziffern haben, also ging ich mit AntonHs Vorschlag. Aber danke euch beiden! – SteveHeineck

Verwandte Themen