• [^] # Perl

    Posté par . En réponse au message Motif multi-lignes avec 'sed'. Évalué à 4.

    je voulais éviter de mettre en branle un monstre comme Perl

    Pour la machine, c'est effectivement plus lourd (mais si tu n'as pas un 486 avec 8 Mo de mémoire ou un matériel embarqué, ça ne devrait pas être bloquant), mais pour toi, pas nécessairement :
    perl -p0777e 's/toto\ntiti/tata/g' fichier

    Voire éventuellement plus intéressant, sauf si tu es sûr que toto et titi sont tout le temps séparés par une fin de ligne :
    perl -p0777e 's/toto\s+titi/tata/gs' fichier

    Ainsi,
    tyty toto titi tete
    tete tutu toto
    tititoto titi tyty

    devient :
    tyty tata tete
    tete tutu tatatata tyty

    Tiré de man perlrun :
    -p indique à Perl de considérer votre programme comme entouré par [une] boucle, qui le fait itérer sur les noms de fichiers passés en arguments, un peu à la manière de sed.
    -0[digits] indique le séparateur d'enregistrement en entrée ($/) en notation octale. [...] La valeur 0777, indique à Perl d'avaler les fichiers en entier car il n'y a pas de caractère avec cette valeur octale.

    Tiré de man perlop :
    s/MOTIF/REMPLACEMENT/egimosx
    s Traitement de la chaîne comme étant une seule ligne.
    (ainsi \s peut correspondre à \n).

    « Le fascisme c’est la gangrène, à Washington comme en Russie. » — adapté de Renaud, Hexagone