[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

Subject: Re: sed - ersetzen durch eine Variable
From: Wilfried Gaensheimer
Date: 13 Jan 2005 09:37:28 -0000


Moin,

Markus Stumpf wrote:
Die bringen perl genauso ins Schleudern wie sed, deshalb verwendest
Du ja "," und das geht mit sed genauso.
    echo "XX STRING" | sed s,XX,"`date '+%D %H%M'`",
Alternativ kann man die vorher escapen, aber das
ist umständlicher als gleich perl zu nehmen.
Aha. Und wieso ist das umstaendlicher das gleiche zu machen, was Du auch
in perl machst?
Weil >ich< nicht gewusst habe, dass man das mit sed auch tun kann. In der man page steht davon z.B. nichts. Mit escapen meinte ich die / in der Ausgabe von date mit einer passenden Anzahl von \\\\ zu versehen.

Damit eruebrigt sich eigentlich der Rest der Diskussion :-), Du hast
natürlich recht.

...
Wenn ich ein Brett um 5 mm duenner haben will, kann ich solange mit
einem 2 kg Hammer draufhauen, bis es platter ist, oder ich kann es
mit 'nem Hobel machen.
Ich kann aber nur hämmern ;-)

Zuletzt: Wenn man es richtig in Perl macht, dann sieht das ungefähr so aus (kann man sicher noch optimieren):

   echo "XX STRING" | perl -p -e 'my @t=localtime(time());
       my $s=sprintf("%02d/%02d/%02d %02d%02d", $t[4]+1, $t[3],
           $t[5]-100, $t[2], $t[1]);
       s,XX,$s,;'

Vergleich der Zeiten (100 Durchläufe):

Perl:
real    0m1.294s
user    0m0.357s
sys     0m0.294s

Sed:
real    0m1.552s
user    0m0.144s
sys     0m0.322s

Ich habe schon unzählige Skripte in sh/sed/... geschrieben und nach einer Stunde bereut nicht gleich in Perl angefangen zu haben. Sobald es mehr als eine Zeile wird, ist Perl (für mich) einfach immer die bessere Wahl. Angefangen bei dem nicht vorhanden Debugger für sh/bash/sed/awk/...

ymmv und servus sed ....

Bye
Wilfried
P.S.: Herbert, Du hast recht ;-)


------------------------------------------------------------------------ Hilfe/Befehle mailto:linux-ug-help@leo.org von der Liste abmelden: mailto:linux-ug-unsubscribe@leo.org (menschlicher) Ansprechpartner: mailto:linux-ug-owner@leo.org