programmation
Perl est un langage de programmation interprété.
perl -le 'print $!+0, "\t", $!++ for 0..127'
(à la différence de sed qui opère ligne par ligne)
Perl permet facilement de faire des recherches/substitutions sur plusieurs lignes dans un fichier ; par exemple pour supprimer toutes les lignes contenues entre les balises “—–BEGIN” et “—–END” dans le fichier FILE (IRL cela sert à supprimer les certificats dans les fichiers de configuration des Fortigate) :
perl -0777 -i -pe 's/[[:blank:]]*set [a-zA-Z0-9-_]* "-----BEGIN.*?-----END.*?\n//igs' FILE
Explications :
-0777
impose à perl de lire tout le fichier d'un seul coup-e
spécifie que le code perl est fourni en argument dans la ligne de commande-p
permet de boucler-i
permet d'altérer le fichier source directement (sans spécifier de fichier destination)Pour l'expression régulière :
s/
permet d'introduire une substitution (rappel : m/
(ou juste /
) pour juste rechercher)?
: quantificateur non gourmand (non-greedy), indique que .*
doit matcher le plus court motif possible (par défaut c'est le plus long)g
permet d'appliquer autant de fois possible la substitutions
pour travailler en mode ligne unique (les sauts de ligne sont “transformés” en \n)i
rend le motif insensible à la casse