Feb 14 2009
Io ti odio!
Caro collega,
stavolta lo scrivo qui: ieri ti ho odiato, per l’ennesima volta!
Quando il nostro collega DBA indiano e’ venuto da me chiedendomi:
«Angelo, come faccio ad inserire una stringa “NAME” su un file “tmp.log” da 1 GB tra la quarta e la quinta riga con VI/VIM?»
Tu hai sentito… ti sei voluto alzare… con quell’aria da saccente… *dovevi* intrometterti… il tuo istinto da “nerdone-primo-della-classe-so-tutto-io” ti ha fatto venire alla mia scrivania mentre io scrivevo il one-liner perl necessario alla magia, consigliandomi di poterlo fare cosi’ e coli’… con sed piuttosto che con awk, e blabla…
Non e’ stato sufficiente che ti dicessi di farti i cazzi tuoi… dovevi gareggiare… dovevi farti sputtanare… e dopo 2 minuti hai avuto anche la sfacciataggine di mandare una email al collega col subject “sed version”, scrivendo questa zozzeria:
$ cat tmp.log | sed 's/^\(\W*\w\+\W\+\w\+\W\+\W*\w\+\)/\1 fff/g'
Ma ti ho punito con la eleganza del Perl:
$ perl -lpne 's/^((\w+\W+){3})/$1NAME /;' tmp.log
Sei old! OLD! Mettitelo in testa. Guarda quella linea, e’ ILLEGGIBILE. Con tutte quelle sequenze di escape!
Peccato che il DBA abbia scelto il tuo sed. In questo mondo non c’e’ giustizia.
11 responses so far
attenzione. RILASCIO I BENCHMARK:
$ time cat tmp.big.log | \
sed ’s/^\(\W*\w\+\W\+\w\+\W\+\W*\w\+\)/\1 NAME/g’ > sedout
cat tmp.big.log
0.01s user 0.27s system 0% cpu 36.300 total
sed ’s/^\(\W*\w\+\W\+\w\+\W\+\W*\w\+\)/\1 NAME/g’ > sedout
35.58s user 0.68s system 99% cpu 36.318 total
$ time perl -lpne ’s/^((\w+\W+){3})/$1NAME /;’ tmp.big.log > perlout
perl -lpne ’s/^((\w+\W+){3})/$1NAME /;’ tmp.big.log > perlout
4.25s user 0.55s system 99% cpu 4.799 total
Perl vince, 4.79 secondi contro 36.
Beh, però c’è da dire che sei anche un po’ strunz chiamando sed dopo una pipe… prova a fare un bel sed ‘quellarobali’ timp.big.log, magari ci mette di meno… dubito comunque sia più veloce di pIrl, epperò magari qualcosa guadagna…
SUSU un po’ di ONESTÀ PORCODIO!
siete veramente tristi, voi e il perl.
io non mi preoccupare.
la giustizia arriva a tempo debito.
tutti noi ci siamo passati ma la rivincita arriva inaspettata.
the geek shall inherit the earth.
@dioporco: porcoddio non sai leggere, il sed l’ha fatto lui. non sai manco leggere che ho fatto time per testare il tempo impiegato :D VAI AL LOURDE.
… e sono pronto a scommettere che il tuo collega nerdone saputello e scassaminchia ha la stessa faccia da cazzo del nerd nella foto! :-D
Non è che me ne freghi più di tanto, ma se non ho capito male dioporco intendeva dire di provare così:
$ time sed ’s/^\(\W*\w\+\W\+\w\+\W\+\W*\w\+\)/\1 NAME/g’ tmp.big.log > sedout
Pallotron e ci ha ragione Mark, quello intendevo… :D
Ho capito che l’ha fatto lui quel sed terrificante, epperò tu hai usato la PIPE PER IL BENCHMARK! HAI FATTO LE PIPPE AL SED! PERVERTITO!
:D
@dioporco: haahha. cmq se ne capissi un po’ di unix capiresti che il cat non influisce “quasi” per niente sul totale del tempo perso. (0.27s su 36s).
sed e awk sono come la paletta e il secchiello di quando sei piccolo, ed e’ DEPRIMENTE sapere che c’e’ gente che si sbatte per scrivere regexp PRIMITIVE e ILLEGIBILI.
madonna che sfigati del cazzo che siete