Perl Regexp
Lutz Donnerhacke
lutz at iks-jena.de
Don Jul 13 14:17:43 CEST 2000
* Nils Juenemann wrote:
>lutz at iks-jena.de wrote:
>> Mit ($a, $b) = ($1, $2) if /^(.*)\.([^.]*)$/ kannst Du den letzten Punkt
>> nehmen.
>
>Das funktioniert aber nur bei gleicher Punktanzahl.
Nein.
>> Noch effizienter ist aber rindex und substr.
>
>Ich habs jetzt so gemacht:
[...einen Schrei gelöscht...]
>Das Problem war ich habe tausende von files, welche alle
>noch etwas vor die Dateierweiterung bekommen sollen.
>
>Also aus blafasel.123.test.txt soll blafasel.123.test.neu.txt
>werden. Wobei die Anzahl der Punkte variert.
$ perl -pe '
chomp;
@_ = split(/\./, $_);
$_ = join(".", @_[$[..$#_-1]).".neu".$_[$#_];
'
blafasel.123.test.txt
blafasel.123.test.neu.txt
Oder besser:
$ perl -pe 's/^(.*)\.([^.]*)$/$1.neu.$2/'
blafasel.123.test.txt
blafasel.123.test.neu.txt