Éditeur de flux - Syntaxe de base

Ce chapitre présente les commandes de base prises en charge par SED et leur syntaxe de ligne de commande. SED peut être invoqué sous les deux formes suivantes:

sed [-n] [-e] 'command(s)' files 
sed [-n] -f scriptfile files

Le premier formulaire permet de spécifier les commandes en ligne et elles sont placées entre guillemets simples. Ce dernier permet de spécifier un fichier script contenant des commandes SED. Cependant, nous pouvons utiliser les deux formulaires ensemble plusieurs fois. SED fournit diverses options de ligne de commande pour contrôler son comportement.

Voyons comment nous pouvons spécifier plusieurs commandes SED. SED fournit ledeletecommande pour supprimer certaines lignes. Supprimons les 1ère, 2ème et 5ème lignes. Pour le moment, ignorez tous les détails de la commande de suppression. Nous discuterons plus en détail de la commande de suppression plus tard.

Tout d'abord, affichez le contenu du fichier à l'aide de cat commander.

[jerry]$ cat books.txt

En exécutant le code ci-dessus, vous obtenez le résultat suivant:

1) A Storm of Swords, George R. R. Martin, 1216 
2) The Two Towers, J. R. R. Tolkien, 352 
3) The Alchemist, Paulo Coelho, 197 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
5) The Pilgrimage, Paulo Coelho, 288 
6) A Game of Thrones, George R. R. Martin, 864

Demandez maintenant à SED de supprimer uniquement certaines lignes. Ici, pour supprimer trois lignes, nous avons spécifié trois commandes séparées avec l'option -e.

[jerry]$ sed -e '1d' -e '2d' -e '5d' books.txt

En exécutant le code ci-dessus, vous obtenez le résultat suivant:

3) The Alchemist, Paulo Coelho, 197 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
6) A Game of Thrones, George R. R. Martin, 864

De plus, nous pouvons écrire plusieurs commandes SED dans un fichier texte et fournir le fichier texte comme argument à SED. SED peut appliquer chaque commande sur le tampon de motifs. L'exemple suivant illustre la deuxième forme de SED.

Commencez par créer un fichier texte contenant des commandes SED. Pour une compréhension facile, utilisons les mêmes commandes SED.

[jerry]$ echo -e "1d\n2d\n5d" > commands.txt 
[jerry]$ cat commands.txt

En exécutant le code ci-dessus, vous obtenez le résultat suivant:

1d 
2d 
5d

Demandez maintenant au SED de lire les commandes du fichier texte. Ici, nous obtenons le même résultat que celui indiqué dans l'exemple ci-dessus.

[jerry]$ sed -f commands.txt books.txt

En exécutant le code ci-dessus, vous obtenez le résultat suivant:

3) The Alchemist, Paulo Coelho, 197 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
6) A Game of Thrones,George R. R. Martin, 864

Options standard

SED prend en charge les options standard suivantes:

  • -n: impression par défaut du tampon de motif. Par exemple, la commande SED suivante n'affiche aucune sortie:

  • [jerry]$ sed -n '' quote.txt
  • -e : L'argument suivant est une commande d'édition. Ici, les crochets angulaires impliquent un paramètre obligatoire. En utilisant cette option, nous pouvons spécifier plusieurs commandes. Imprimons chaque ligne deux fois:

  • [jerry]$ sed -e '' -e 'p' quote.txt

En exécutant le code ci-dessus, vous obtenez 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. 
 - Paulo Coelho, The Alchemist 
 - Paulo Coelho, The Alchemist
  • -F : L'argument suivant est un fichier contenant des commandes d'édition. Les crochets angulaires impliquent un paramètre obligatoire. Dans l'exemple suivant, nous spécifions la commande d'impression via le fichier:

[jerry]$ echo "p" > commands 
[jerry]$ sed -n -f commands quote.txt

En exécutant le code ci-dessus, vous obtenez le résultat suivant:

There is only one thing that makes a dream impossible to achieve: the fear of failure. 
 - Paulo Coelho, The Alchemist

Options spécifiques GNU

Passons rapidement en revue les options SED spécifiques à GNU. Notez que ces options sont spécifiques à GNU; et peut ne pas être pris en charge par d'autres variantes du SED. Dans les sections suivantes, nous discuterons de ces options plus en détail.

  • -n, --quiet, --silent: Identique à l'option -n standard.

  • -e script, --expression = script: Identique à l'option -e standard.

  • -f fichier-script, --file = fichier-script: Identique à l'option -f standard.

  • --follow-symlinks: Si cette option est fournie, le SED suit les liens symboliques lors de l'édition des fichiers sur place.

  • -i [SUFFIXE], --in-place [= SUFFIXE]: Cette option est utilisée pour éditer le fichier sur place. Si le suffixe est fourni, il effectue une sauvegarde du fichier d'origine, sinon il écrase le fichier d'origine.

  • -l N, --line-lenght = N: Cette option définit la longueur de ligne de la commande l à N caractères.

  • --posix: Cette option désactive toutes les extensions GNU.

  • -r, --regexp-extended: Cette option permet d'utiliser des expressions régulières étendues plutôt que des expressions régulières de base.

  • -u, --unbuffered: lorsque cette option est fournie, le SED charge une quantité minimale de données à partir des fichiers d'entrée et vide les tampons de sortie plus souvent. C'est utile pour éditer la sortie de "tail -f" lorsque vous ne voulez pas attendre la sortie.

  • -z, --null-data: Par défaut, le SED sépare chaque ligne par un caractère de nouvelle ligne. Si l'option NULL-data est fournie, elle sépare les lignes par des caractères NULL.