Perl regex, um über die Befehlszeile auf eine Datei zu reagieren

7

In einer Datei, sagen wir xyz.txt Ich möchte das Muster einer beliebigen Zahl, gefolgt von einem Punkt Beispiel ersetzen: 1., 2., 10., 11. etc .. mit einem Leerzeichen. Wie man einen Perl-Befehl in der Befehlszeile verfasst, um auf die Datei zu reagieren, um das obige zu tun, was sollte die zu verwendende Regex sein?

Bitte helfen Sie Danke.

    
Jim 05.12.2010, 20:35
quelle

3 Antworten

20

Das muss ein Perl oneliner sein?

%Vor%

Die Perl-Befehlszeilenoptionen: -i wird verwendet, um anzugeben, was mit der Eingabedatei passiert. Wenn Sie keine Dateierweiterung angeben, geht die ursprüngliche Datei verloren und wird durch die Perl-Ausgabe ersetzt. Zum Beispiel, wenn ich das hatte:

%Vor%

Die ursprüngliche Datei wird mit einem .bak Suffix gespeichert und & lt; Dateiname & gt; selbst enthält Ihre Ausgabe.

Das -p bedeutet, dass Sie Ihr Perl-Programm in eine Druckschleife einschließen, die SOFORT so aussieht:

%Vor%

Dies ist eine etwas vereinfachte Erklärung, was vor sich geht. Sie können die tatsächliche Perl-Schleife sehen, indem Sie eine perldoc perlrun von der Befehlszeile ausführen. Die Hauptidee besteht darin, dass Sie auf jede Zeile einer Datei wie sed oder awk reagieren können.

Das -e enthält einfach Ihren Perl-Befehl.

Sie können auch eine Dateiumleitung durchführen:

%Vor%     
David W. 05.12.2010 22:26
quelle
4

Antwort (nicht getestet):

%Vor%     
Colin Fine 05.12.2010 20:38
quelle
2

Beide

%Vor%

und

%Vor%

kann nicht auf meinem System ausgeführt werden.

Ich benutze die folgende Reihenfolge:

%Vor%     
IFQ 06.12.2010 01:23
quelle

Tags und Links