Was mache ich falsch in diesem Perl-One-Liner?

7

Ich habe eine Datei, die viele davon enthält

%Vor%

und ich möchte den Buchstabencode mit einem Perl-Einzeiler ausgeben. Also versuche ich

%Vor%

aber es wird nichts gedruckt.

Was mache ich falsch?

    
Sandra Schlichting 28.08.2010, 13:44
quelle

3 Antworten

13

Die Option -n verarbeitet jede Zeile, druckt jedoch nichts aus. Sie müssen also ein explizites print hinzufügen, wenn Sie erfolgreich übereinstimmen.

%Vor%

Ein anderer Ansatz, wenn Sie sicher sind, dass jede Zeile übereinstimmt, ist die Verwendung der Option -p , die nach der Verarbeitung den Wert von $_ ausgibt, z. B .:

%Vor%     
PP. 28.08.2010, 13:46
quelle
6

Deine Regex ist in Ordnung. Sie erhalten keine Ausgabe, weil die Option -n nichts ausgibt. Es wird einfach eine while (<>) { ... } -Schleife um Ihr Programm gelegt (führen Sie perl --help für kurze Erklärungen der Perl-Optionen aus).

Im folgenden Beispiel wird Ihre Regex verwendet, jedoch etwas Druck hinzugefügt. Im Listenkontext geben Regexes mit der Option /g alle Captures zurück. Effektiv drucken wir jede Aufnahme.

%Vor%     
FMc 28.08.2010 14:32
quelle
1

Sie können die Zeichenkette auf "=" anstatt auf Übereinstimmung aufteilen:

%Vor%     
Eugene Yarmash 28.08.2010 13:51
quelle

Tags und Links