User since
2004-03-26
7
Artikel
BenutzerIn
Guten Abend,
ich suche eine Möglichkeit aus einer großen Textdatei (ca.80000 Zeilen) die Zeilen mit folgendem Inhalt zu löschen:
VKORG/VTWEG 0120 03
VKORG/VTWEG 0130 01
VKORG/VTWEG 0130 03
VKORG/VTWEG 0140 01
VKORG/VTWEG 0140 03
wobei die Zahlen unterschiedlich sind, aber immer in dieser Reihenfolge, Text Leer 4 Zahlen Leer 2 Zahlen.
Mir fehlt das patternmuster.
#! /usr/bin/perl
use strict; # siehe perldoc strict
use warnings;
my $input = 'c:/wgt.txt';
my $output = 'c:/wgt_neu.txt';
my $pattern =;
my $ersatz = "";
open(IN,"<$input") or die $!;
my @lines = <IN>;
close IN;
open(WRITE,">$output") or die $!;
foreach my $line(@lines){
$line =~ s/\Q$pattern\E/$ersatz/g;
print WRITE $line;
}
close WRITE;
Kann mir bitte jemand helfen?
Danke und Gruß
Walli
User since
2003-08-14
2022
Artikel
BenutzerIn
Sollte einzeilig gehen:
EDIT: gelöscht, siehe unten.\n\n
<!--EDIT|Ronnie|1184528182-->
User since
2004-03-26
7
Artikel
BenutzerIn
Hallo Ronnie,
danke für die schnelle Antwort.
Ich bekomme folgenden Fehler
Can't find string terminator "'" anywhere before EOF at -e line 1.
User since
2003-08-14
2022
Artikel
BenutzerIn
Sorry, probiere es mal so:
perl -p -e "next unless /^VKORG\/VTWEG\s+\d+\s+\d+$/" file > file.new
User since
2004-03-26
7
Artikel
BenutzerIn
es kommt zwar kein Fehler, aber ersetzt wird nichts.
User since
2003-08-04
14371
Artikel
ModeratorIn
Wenn einfach nur irgendwo in der Zeile die Zeichenfolge steht, dann:
perl -p -e "next unless /VKORG\/VTWEG\s+\d+\s+\d+/" file > file.new
User since
2004-03-26
7
Artikel
BenutzerIn
es kommt kein Fehler, aber ersetzt wird nichts
User since
2004-03-26
7
Artikel
BenutzerIn
Danke, das hat geklappt.
Könntest Du mir die Zeile bitte mal erläutern?
Walli
User since
2006-10-06
283
Artikel
BenutzerIn
Es wird alles aus der Datei file in die Datei file.new geschrieben, wenn nicht der match-Befehl zutrifft.
D'OH
Daniel