cClaude.rocks ☕ Le blog

[Nouvelles technologies, sciences et coups de gueule…]

Menu
😤 Ce billet a été édité le : 2022-11-08

sed est un éditeur similaire à vi mais permettant l’édition de fichier automatisée.



Comment ajouter un saut de ligne après un motif donné avec « sed »

Un cas d’usage typique pour cette astuce est lorsqu’on souhaite lire le contenu d’un fichier minimiser dont tout le contenu se trouve sur une seule ligne.

Si cela permet de limiter l’usage de la base passante, ce n’est pas très lisible. Si vous utiliser un éditeur prenant en charge la coloration syntaxique et l’analyse du code, cela peut même être un cauchemar suivant la taille du fichier, en effet certains éditeurs vont utiliser beaucoup de ressources pour ce type de fichier.

Par exemple, dans le cas d’un fichier CSS on sait que chaque instruction doit se terminer par un point virgule. Il suffit dont d’ajouter un saut de ligne après le caractère ; (point virgule).

On peut rendre aisément le fichier lisible à l’aide de la commande :

sed 's/;/&\n/g' fichier.min.css >fichier.css

Cela ne donnera pas une belle indentation, comme certain IDE savent le faire, mais c’est compréhensible et vous trouverez certainement d’autre cas d’usage.

  • sed : Éditeur en ligne
  • 's/;/&\n/g' : Commande de remplacement [détail ci-dessous]
    • s : Indique une action de recherche (search)
    • / : séparateur
    • ; : Le motif à rechercher, ici c’est juste le caractère ';'
    • / : séparateur
    • &\n : Par quoi sera remplacé le motif [détail ci-dessous]
      • & : Indique que le motif trouvé doit être gardé dans le résultat à cette position
      • \n : Après le motif, ici on veut un saut de ligne
  • / : séparateur
  • g : Indique une action de remplacement global
  • fichier.min.css : Le fichier initial
  • > : redirige le résultat vers un fichier
  • fichier.css : Le nouveau fichier

Pour vous aider à comprendre voici un second exemple, ici on insère un saut de ligne avant le motif :

cat <<EOF | sed 's,ligne2,\n&,g'
ligne1
ligne2
ligne3
EOF


Explications détaillées

  • Explications en trois parties

    Partie 1 :

    D’abord ce qui concerne le remplacement, puisque c’est le sujet de ce billet.

    • sed : Éditeur en ligne
    • 's,ligne2,\n&,g' : Commande de remplacement [détail ci-dessous]
      • s : Indique une action de recherche (search)
      • , : séparateur
      • ligne2 : Le motif à rechercher
      • , : séparateur
      • \n& : Par quoi sera remplacé le motif [détail ci-dessous]
        • \n : Saut de ligne
        • & : Réinsère le motif dans le résultat à cette position
    • , : séparateur
    • g : Indique une action de remplacement global

    Partie 2

    La syntaxe de cat :

    En général, on utilise cat suivit d’un nom de fichier pour afficher son contenu

    Mais de base la commande cat ne fait pas grand-chose, elle prend une entrée et la réécrit à l’identique, par exemple, les instructions :

    ls -l --color=never | cat
    

    Est identique à :

    ls -l --color=never
    

    On peut à l’aide de l’opérateur << changé l’entrée de la commande. Pour cela il faut faire suivre l’opérateur d’un motif qui devra être répété sur la dernière ligne.

    cat <<MON_MOTIF
    Trop cool
    Je peux même avoir une ligne avec juste EOF:
    EOF
    et là on est à la fin
    MON_MOTIF
    

    ce qui affichera :

    Trop cool
    Je peux même avoir une ligne avec juste EOF:
    EOF
    et là on est à la fin
    

    Partie 3

    La redirection de cat vers une autre commande, ici `sed :

    La syntaxe suivante permet d’afficher le fichier et passe le résultat à la commande less qui affichera le fichier page par page :

    cat fichier | less
    

    Et dans notre cas, c’est en fait la même chose :

    cat EOF | N-IMPORTE-QUELLE-COMMANDE-QUI-TRAITE-LE-RÉSULTAT-DE-CAT | ÉVENTUELLEMENT-UNE-AUTRE-COMMANDE
    ligne1
    ligne2
    ligne3
    EOF
    


Liens

ᦿ


ℹ 2006 - 2022 | 🏠 Accueil du domaine | 🏡 Accueil du blog