Perl OneLiner (Documento scaduto) |
|
|
Tips & Tricks : Perl
Perl in one line
Non tutti sanno che Perl è utilizzabile anche dal prompt (chiaramente sia su Windows che su Linux e tutti i sistemi che supportano Perl) e risolve facilmente moltissimi problemi che altrimenti bisognerebbe affrontare con software dedicati o complessi tipo script bash.
Sostituzione veloce del testo di uno o più file
# perl -i -pe "s/vecchiotesto/nuovotesto /" *
Serve a sostituire vecchiotesto in nuovotesto all'interno di tutti i file (di testo) della directory.
Chiaramente se al posto di "*" si mette il nome di un file la sostituzione viene effettuata solo in quel file:
# perl -i -pe "s/vecchiotesto/nuovotesto /" pippo.txt
C'è da dire poi che vecchiotesto deve rispettare le regole delle RE.
Stampare il contenuto di un file di testo da un'occorrenza in poi
# perl -ne '/foo/...print && 0' test.txt
Nell'esempio chiaramente "foo" è la parola da cercare (o meglio la RE che deve fare il match) e test.txt il file di testo nel quale cercare.
Verificare l'header di una pagina html remota
perl -MLWP::UserAgent -e 'exit 1
if LWP::UserAgent->new->get(shift)->header("WWW-Authenticate")=~/foo/' 1.2.3.4
Grazie a questo onliner è possibile verificare la presenza della stringa (o RE) "foo" all'interno dell'header della pagina HTML ritornata dal sito http://10.20.30.40. Se la RE ritorna vero il oneliner ritorna il valore 1 altrimenti "undef".
Il Oneliner richiede che sia installato nel sistema il modulo Perl LWP::UserAgent.
Generare una pwd casuale
perl -e 'print ((0..9,a..z)[rand(31)]) for 1..8'
Per una soluzione più funzionale si consiglia APG, ma per una soluzione onthefly just Perl!
Emulare 'wc -l'
cat miotesto.txt | perl -ne 'eof()?print$i,$/:$i++'
A chi non è capitato di utilizzare 'wc -l' per contare le righe generate da una qualche comando, ma se wc non è presente nel sistema? ecco un piccolo trucchetto. L'esempio conta le righe generate dall'output di 'cat miotesto.txt'.
|