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éparateurg
 : Indique une action de remplacement globalfichier.min.css
 : Le fichier initial>
 : redirige le résultat vers un fichierfichier.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éparateurligne2
 : 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éparateurg
 : 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)
኿