one liner perl : liste d exemple

Creation: 25 aout 2016
Mise à jour: 27 aout 2016
Version: 1.1
Author: Jean-Louis Bicquelet-Salaün
Location: http://jlbicquelet.free.fr
Copyright: (c) 2016 Jean-Louis BICQUELET-SALAÜN

uniligne en perl

Cet article vous présente l'ensemble des outils que Perl met à votre disposition pour l'écriture d'unilignes.

Un uniligne Perl est une commande tenant sur une seule ligne, mais qui peut utiliser les options de l'interpéteur perl ce qui va rentre cette ligne très performante. Cela revient à faire de perl un remplacement d'un ensemble de tubes avec des commandes comme sed, cut, sort , etc..

Cet article reprend ce que j'ai écris truc PERL pour shell, ainsi que dans one liner en PERL, mais j'ai classé par option de l'interpréteur perl (,-i,-ne,-ane ...)

Le perl est utilisé sous windows. Cela oblige à créer les lignes de codes entre deux " et non entre '. comme sous unix ou linux Les parenthèses utilisées dans cette ligne doivent être remplacées par \" pour que la syntaxe soit correcte..

utilisation des unilignes Perl

option -e : execution

écrire une ligne perl -e "print \"phase 1\n\""
phase 1
afficher n fois le même caractère , par exemple pour tracer une ligne.
Pour certains caractères, il faut utiliser chr()
perl -e "print \"\-\" x 32"
--------------------------------
perl -e "$c=chr(61); print \"$c\" x 32"
================================
calculer une valeur perl -e "print 34+56+sqrt(2), \"\n\" "
91.4142135623731
afficher la date perl -e "use Time::Local;print scalar localtime(timeloca(0,10,9,25,6,2016));"
Mon Jul 25 09:10:00 2016
tirer un dé ou nombre aléatoire entre 0 et 100% perl -e "print int(rand(6))+1"
perl -e "print int(rand(101))"
trier un fichier perl -e "print sort <>" fichier.txt
afficher l'alphabet perl -le "$, = \" \"; print (\"a\"..\"z\")"
a b c d e f g h i j k l m n o p q r s t u v w x y z

option -ne: looping execution

grep en perl perl -ne "print if /for/" fichier.txt
compter le nombre de lettres dans un fichier perl -ne "END{print \"$n lettres e\n\"} $n += y/e//" fichier.txt
106 lettres e
compter le nombre de ligne perl -ne "END{print \"$n lignes\n\"} $n += y/\n//" fichier.txt
56 lignes
perl -le "print scalar(()=<>)" fichier.txt
supprimer les ligne entre 2 et 3 perl -ne "print unless 2 .. 3" liste.txt 1
4
5
extraire un paragraphe entre deux mots clés. perl -ne "print if /^=pod/ .. /^=cut/" pod.txt
=pod
doc perl
=cut
afficher le fichier à raison d'un mot par ligne perl -ne "print join(\"\n\", split(/ /,$_));print(\"\n\")"fichier.txt
le
fichier
..
supprimer les lignes vides d'un fichier perl -ne "print unless /^$/" liste.txt
perl -ne "print if /\S/" l.txt
compter le nombre de lignes perl -ne "}{print $." fichier.txt

option -pe

remplacer une chaine par une autre perl -pe "s/toto/tata/" fichier.txt > nouveau_fichier.txt
équivalent d'un grep -v perl -pe "$_ ='' if /toto/" fichier.txt
afficher les 3 premières lignes d'un fichier perl -pe "exit if $. >3"fichier.txt
perl -pe '4..exit' fichier.txt
perl -pe '3...exit' fichier.txt
afficher les lignes 10 à 15 d'un fichier perl -ne "print if 10..15"fichier.txt
afficher la date correspondantà un timestamp perl -ne "print scalar gmtime,\" \",$_"
Mon Jul 25 13:23:40 2016 1398331554
ajouter une chaine en début de ligne perl -pe "s/(.*)/string\t$1/" fichier.txt
numérote les lignes d'un fichier perl -pe "$_ = \"$. $_\"" fichier.txt
1 le fichier tata.txt est prÛt.
2 On peut travailler avec.

option -i : edition

L'option -i vous permet de faire de l'édition sur place, c'est-à-dire de modifier directement le fichier que vous êtes en train de traiter.

remplacer une chaine par une autre dans un fichier perl -i -pe "s/toto/tata/" fichier.txt
remplacer une chaine par une autre dans un fichier avec backup du fichier perl -i -pe "s/toto/tata/" fichier.txt
supprimer un paragraphe entre deux mots clés perl -i.old -ne "print unless /^BEGIN$/ .. /^END$/" fichier.txt

option -le

compter le nombre de lignes perl -le "print $n=()=<>" liste.txt
9
générer un mot de passe simple perl -le "print map { (\"a\"..\"z\")[rand 26] } 1..8"
rylgqhmk
générer un mot de passe plus compliqué perl -le "print map { (\"a\"..\"z\", 0..9,\"A\"..\"Z\")[rand 60] } 1..16"
yQyN5mpqM4G5os3J

option -lpe

mettre un fichier en minucsule perl -lne "tr/[A-Z]/[a-z]/" fichier.txt
mettre un fichier en majuscule perl -lne "tr/[a-z]/[A-Z]/" fichier.txt

option -lne

compter le nombre de lignes perl -lne "END { print $. }" liste.txt
9

option -lane

L'option -a ajoute un split() au début de la boucle implicite créée par -n ou -p. Le résultat du split est stocké dans le tableau @F.

extraire la première colonne d'un tableau ou les colonnes 4 et 5 perl -lane 'print $F[0] ' data.csv
perl -lane 'print shift @F' data.csvperl -lane 'print $F[4] $F[5]' data.csv

option -m : module

l'option -m :permet de charger un module et d"étendre considérablement les possibilitées offertes par Prel.

afficher la date perl -e "use Time::Local;print scalar localtime(timeloca(0,10,9,25,6,2016));"
Mon Jul 25 09:10:00 2016