cClaude.rocks ☕ Le blog

[Nouvelles technologies du libre, 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

  • Documentation de GNU sed (en anglais)

኿


â„č 2006 - 2024 | 🏠 Accueil du domaine | 🏡 Accueil du blog