pro letzte 15 Zeichen entfernen

A

AlexNBG276

Jungspund
Hallo zusammen,

wie kann ich die letzten 15 Zeichen pro Zeile in einem Text-File entfernen (die Zeilen haben eine unterschiedliche Anzahl von Zeichen).

Vielen Dank für Support!
 
Mit einem Skript. Schnellschuss:

Code:
#!/usr/bin/perl -w

open FILE, "test.txt";
my $line;

while ($line = <FILE>) {
    $line =~ /(.*).{15}/;
    print $1."\n";
}

Geht aber sicherlich auch ganz elegant irgendwie mit sed. Ich mag sed aber nunmal nicht. ;)
 
Geht mit sed:
Code:
sed -e 's/.\{15\}$//' infile
Aber auch problemlos mit perl:
Code:
perl -pe 's/.{15}$//' infile
Beide Varianten schreiben das Ergebnis auf stdout und lassen Zeilen mit weniger als 15 Zeichen unberührt. (!)
 
Achja... das erinnert mich daran, dass ich mir mal die Parameter von Perl einprägen sollte. :)
 
Achja... das erinnert mich daran, dass ich mir mal die Parameter von Perl einprägen sollte.
Joar, kenne keine Sprache, die CLI textprocessing so liep und flauschig macht wie perl.
Die wichtigsten switch-Kombis sind imho -pe (sed like) -ne (sed -n like), -ane (awk like, dann auch mit -F als field seperator) sowie -l, -0 und -M.

<3 Gott in Schwarz
What the ....? Du bist aber einfach zu beeindrucken ;)

Alibi ontopic:
Code:
perl -lpe 'substr($_, -15) = ""' infile
Das funktioniert auch mit Zeilen < 15 Zeichen. (Diese werden dann einfach komplett gelöscht. Das ist btw einfach nur ein leicht verändertes Beispiel aus "perlrun".)
 
Jo, wenn man genauer drüber nachdenkt (was ich zugegebenermaßen selten beim Beantworten in Foren tue :D ), dann fallen einem irgendwie zig andere Möglichkeiten ein.
 

Ähnliche Themen

Kernel-Log, das "dmesg" ausgibt, löschen?

Zeilen aus Txt-Datei entfernen, wenn eine Spalte einen bestimmten Wert enthält

Keine grafische Oberfläche (Debian Installation)

Teilstring extrahieren

Mit AWK verschiedene Felder verschiedener Zeilen vergleichen

Zurück
Oben