Éditeur de flux - Workflow

Dans ce chapitre, nous explorerons le fonctionnement exact de SED. Pour devenir un utilisateur expert du SED, il faut connaître ses composants internes. SED suit un flux de travail simple: lecture, exécution et affichage. Le diagramme suivant illustre le flux de travail.

  • Read: SED lit une ligne du flux d'entrée (fichier, tube ou stdin) et la stocke dans son tampon interne appelé pattern buffer.

  • Execute: Toutes les commandes SED sont appliquées séquentiellement sur le tampon de motifs. Par défaut, les commandes SED sont appliquées sur toutes les lignes (globalement) sauf si l'adressage de ligne est spécifié.

  • Display: Envoyez le contenu (modifié) au flux de sortie. Après l'envoi des données, le tampon de motif sera vide.

  • Le processus ci-dessus se répète jusqu'à ce que le fichier soit épuisé.

Points à noter

  • Le tampon de motifs est une zone de stockage volatile privée en mémoire utilisée par le SED.

  • Par défaut, toutes les commandes SED sont appliquées au tampon de motifs, par conséquent le fichier d'entrée reste inchangé. GNU SED fournit un moyen de modifier le fichier d'entrée en un lieu. Nous l'explorerons dans les sections suivantes.

  • Il existe une autre zone de mémoire appelée hold bufferqui est également une zone de stockage volatile privée, en mémoire. Les données peuvent être stockées dans un tampon de conservation pour une récupération ultérieure. À la fin de chaque cycle, SED supprime le contenu du tampon de motif mais le contenu du tampon de maintien reste persistant entre les cycles SED. Cependant, les commandes SED ne peuvent pas être exécutées directement sur le tampon de maintien, par conséquent SED permet le déplacement des données entre le tampon de maintien et le tampon de motif.

  • Au départ, les tampons de motif et de maintien sont vides.

  • Si aucun fichier d'entrée n'est fourni, alors SED accepte l'entrée du flux d'entrée standard (stdin).

  • Si la plage d'adresses n'est pas fournie par défaut, alors SED fonctionne sur chaque ligne.

Exemples

Créons un fichier texte quote.txt pour contenir une citation du célèbre auteur Paulo Coelho.

[jerry]$ vi quote.txt 
There is only one thing that makes a dream impossible to achieve: the fear of failure. 
 - Paulo Coelho, The Alchemist

Pour comprendre le flux de travail de SED, affichons le contenu du fichier quote.txt en utilisant SED. Cet exemple simule lecat commander.

[jerry]$ sed '' quote.txt

Lorsque le code ci-dessus est exécuté, il produira le résultat suivant.

There is only one thing that makes a dream impossible to achieve: the fear of failure.

Dans l'exemple ci-dessus, quote.txt est le nom du fichier d'entrée et avant cela, il y a une paire de guillemets simples qui implique la commande SED. Démystifions cette opération.

Le premier SED lit une ligne du fichier d'entrée quote.txt et la stocke dans sa mémoire tampon. Ensuite, il applique les commandes SED sur le tampon de motifs. Dans notre cas, aucune commande SED n'est là, donc aucune opération n'est effectuée sur le tampon de motif. Enfin, il supprime et imprime le contenu du tampon de motif sur la sortie standard. N'est-ce pas simple?

Dans l'exemple suivant, SED accepte l'entrée du flux d'entrée standard.

[jerry]$ sed '' 
       
      

Lorsque le code ci-dessus est exécuté, il produira le résultat suivant.

There is only one thing that makes a dream impossible to achieve: the fear of failure. 
There is only one thing that makes a dream impossible to achieve: the fear of failure.

Ici, la première ligne est saisie via le clavier et la seconde est la sortie générée par SED. Pour quitter la session SED, appuyez sur ctrl-D (^ D).