▷ Comment utiliser la commande SED sous Linux - EXEMPLES

Linux est un système plein de commandes où chacune joue un rôle essentiel dans le comportement de certaines tâches, qu'elles soient utilisateur, objet ou gestion de support, chaque commande a sa participation dans Linux et l'une de ces commandes est Sed dont nous parlerons chez Solvetic dans les détails.

Qu'est-ce que la commande sed sous LinuxLa commande sed est littéralement un éditeur de flux que nous pouvons utiliser pour modifier des travaux sur le texte avec des fonctions de base dans un flux d'entrée soit à partir d'un fichier, soit à partir d'un pipeline, le cas échéant.

Contrairement à d'autres éditeurs de texte, avec sed, il est possible de filtrer le texte dans un pipeline au fur et à mesure que nous parcourons le contenu sélectionné.

avantageLes avantages d'utiliser sed sous Linux sont :

  • Nous pouvons sélectionner du texte
  • Nous sommes en mesure de remplacer le texte
  • Ajouter des lignes au texte
  • Nous pouvons supprimer des lignes du texte
  • Permet de modifier ou de conserver un fichier original

La syntaxe générale d'utilisation de sed est la suivante :

 sed OPTIONS… [SCRIPT] [INPUT_FILE…]
Nous allons apprendre quelques façons d'utiliser cette commande sous Linux.

1. Comment utiliser la commande SED sous Linux

Utilisation de base de sedPour cet exemple, nous allons utiliser "echo" pour voir comment la commande sed peut remplacer une partie du texte saisi, nous entrons :

 écho solvitique | sed 's / vitic / vetic /'
Dans ce cas, nous disons à sed de remplacer le mot « vitic » par « vetic », lorsque vous appuyez sur Entrée, ce sera le résultat :

AGRANDIR

On voit que le changement est automatique.

2. Sélection de texte avec la commande SED Linux

Étape 1
Dans ce cas, nous aurons un fichier texte qui est hébergé sur le bureau :

AGRANDIR

Nous allons maintenant utiliser la ligne suivante :

 moins Solvetic.txt
Étape 2
Lorsque vous appuyez sur Entrée, ce sera le résultat :

AGRANDIR

Avec sed, il est possible de sélectionner certaines lignes du fichier, pour cela nous devons indiquer les lignes initiales et finales de la plage à sélectionner, par exemple, si nous voulons extraire les lignes deux à sept, nous exécutons :

 sed -n '2,7p' Solvetic.txt
Étape 3
Nous verrons ce qui suit :

AGRANDIR

Nous devons garder à l'esprit la virgule dans les plages à attribuer (2,7), le paramètre p indique qu'il signifie "print matching lines", avec cela la commande sed imprimera toutes les lignes de cette plage et le -n (quiet ) s'occupe de ne pas afficher le texte qui ne correspond pas à cette plage.

Étape 4
Nous pouvons utiliser le paramètre -e (expression) afin de faire des sélections multiples, par exemple :

 sed -n -e '1,2p' -e '5,6p' Solvetic.txt

AGRANDIR

Étape 5
Avec sed il est possible de sélectionner la ligne de départ, puis on indique laquelle doit être parcourue dans le fichier et pour imprimer les lignes alternatives, par exemple, on entre :

 sed -n '1 ~ 3p' Solvetic.txt
Dans ce cas, le premier numéro fait référence à la ligne de départ et le deuxième numéro indique à sed quelles lignes après la ligne de départ seront affichées :

AGRANDIR

Étape 6
Une autre utilisation de sed est la possibilité de sélectionner des lignes dans lesquelles se trouvent les motifs de texte correspondants, ceci si nous ne savons pas d'où provient le numéro de ligne, nous pouvons exécuter ce qui suit :

 sed -n '/ Exécuter / p' Solvetic.txt

AGRANDIR

Nous verrons les lignes qui commencent par ce terme.

3. Comment créer des remplacements avec SED Linux

Étape 1
Dans la partie de base, nous avons vu comment remplacer du texte à l'aide de sed, là nous avons utilisé le paramètre -s (substitution). Ensuite, la première chaîne indique le motif de recherche et la seconde fait référence au texte par lequel elle va être remplacée.

 sed -n 's/tâches/actions/p' Solvetic.txt 
Dans cet exemple, nous remplaçons "tasks" par "actions":

AGRANDIR

Étape 2
Avec le paramètre p sed il s'arrête automatiquement après le premier match, pour effectuer une recherche globale et faire le changement en général il faut ajouter "g":

 sed -n 's/tâches/actions/gp' Solvetic.txt
Si nous voulons qu'il soit insensible à la casse, nous ajouterons le "i":
 sed -n 's/tâches/actions/gpi' Solvetic.txt
Étape 3
Il est possible de créer des restrictions sur les remplacements uniquement à certaines sections du fichier, tout d'abord nous listons les lignes à analyser :
 sed -n '1,3p' Solvetic.txt

AGRANDIR

Étape 4
Voyons ce qui suit, nous pouvons trouver où il y a deux espaces et les remplacer par un :

 sed -n '1.3 s / * / / gp' Solvetic.txt
L'astérisque (*) représente zéro ou plus du caractère précédemment sélectionné.

Étape 5
Vous pouvez réduire le motif de recherche à un seul espace avec la commande suivante :

 sed -n '1.3 s / * / / gp' Solvetic.txt
On voit la différence dans les résultats :

AGRANDIR

Dans ce dernier cas, l'astérisque correspond à zéro ou plus du caractère précédent, ce qui fait que chaque caractère non espace ressemble à un "espace zéro" en appliquant la commande.

Étape 6
Pour effectuer deux ou plusieurs substitutions simultanément, nous exécutons :

 sed -n -e 's / exécuté / appliqué / gip' -e 's / tâches / actions / gip' Solvetic.txt

AGRANDIR

4. Options de remplacement SED sous Linux


Nous pouvons également utiliser sed pour extraire les noms de fichiers du système, dans ce cas, nous devons garder à l'esprit que chaque objet doit correspondre à un modèle de recherche (sous-expressions) qui peut être numéroté (jusqu'à un maximum de neuf éléments).

Étape 1
Ces nombres peuvent ensuite être utilisés pour référencer des sous-expressions spécifiques.
La sous-expression doit être entourée de parenthèses [()] et les parenthèses doivent être précédées d'une barre oblique inverse (\) afin qu'elles ne soient pas détectées comme un caractère normal, par exemple :

 sed 's / \ ([^:] * \). * / \ 1 /' / etc / passwd

AGRANDIR

Les variables utilisées dans cette commande sont

  • sed 's / : indique la commande sed et le début de l'expression de remplacement.
  • \ (: entourez la sous-expression, précédée d'une barre oblique inverse
  • [^:] * : est la première sous-expression du terme de recherche qui contient un groupe entre parenthèses, le signe caret (^) signifie « non » lorsqu'il est utilisé dans un groupe, c'est-à-dire tout caractère qui n'est pas un deux-points
  • \) : La parenthèse fermante [)] avec une barre oblique inverse
  • . * : est la deuxième sous-expression de recherche qui indique "n'importe quel caractère et n'importe quel nombre de ceux-ci".
  • / \ 1 : est la partie de remplacement de l'expression qui contient un chiffre 1 précédé d'une barre oblique inverse (\) et indique que le texte correspond à la première sous-expression
  • / ': terminer la commande sed

Étape 2
Avec la commande précédente, nous avons recherché toute chaîne de caractères ne contenant pas de deux-points, puisque chaque ligne du fichier /etc/passwd commence par le nom d'utilisateur se terminant par deux-points. Nous pouvons remplacer cette valeur en isolant le nom d'utilisateur par la commande suivante :

 sed 's / \ ([^:] * \) \ (. * \) / \ 2 /' / etc / passwd

AGRANDIR

Étape 3
Nous pouvons afficher uniquement les noms d'utilisateurs avec la commande suivante :

 sed 's /:.*// "/ etc / passwd
Une autre option avec sed consiste à utiliser le paramètre c (cut - cut) pour remplacer du texte dans un fichier, par exemple :
 sed '/ Linux / c système d'exploitation Linux' Solvetic.txt

AGRANDIR

5. Insérer des lignes et du texte avec SED sous Linux

Étape 1
Une autre tâche à utiliser avec sed consiste à insérer de nouvelles lignes et du texte dans un fichier, dans ce cas, nous avons les données suivantes :

AGRANDIR

Étape 2
On peut insérer une nouvelle ligne en précisant en dessous de laquelle elle sera insérée :

 sed '/ Ub / a -> Inséré !' Solvetic.txt

AGRANDIR

Étape 3
Il est également possible d'utiliser la commande Insérer (i) afin d'insérer une nouvelle ligne au dessus de la correspondance :

 sed '/ Wi / i -> Inséré !' Solvetic.txt

AGRANDIR

Étape 4
Nous pouvons utiliser le signe esperluette (&) afin d'ajouter un nouveau texte à une ligne correspondante dans le fichier, nous exécutons :

 sed 's /.*/--> inséré & /' Solvetic.txt

AGRANDIR

6. Comment supprimer une ligne avec SED Linux


Pour ce cas, nous devons utiliser le paramètre d (delete), pour supprimer par exemple la deuxième ligne que nous exécutons :
 sed '2d' Solvetic.txt

AGRANDIR

Nous pouvons supprimer une plage si nécessaire :

 sed '1,4d' Solvetic.txt
Pour supprimer des lignes en dehors d'une plage, nous devons utiliser un point d'exclamation (!) Comme suit :
 sed '2,4! d' Solvetic.txt

7. Comment enregistrer les modifications avec SED sous Linux

Étape 1
Pour appliquer les modifications apportées, il est possible d'utiliser l'option sur place (-i) afin que sed écrive les modifications dans le fichier d'origine, mais pour plus de sécurité, nous pouvons ajouter une extension de sauvegarde comme suit (nous avons sauvegardé les lignes contenant le mot Wi) :

 sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txt
Nous listons le contenu :
 chat Solvetic.txt.bak

AGRANDIR

Étape 2
Il est possible de rediriger la sortie vers un nouveau fichier avec les mêmes résultats :

 sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txt> Solvetic1.txt

AGRANDIR

Avec sed, nous pouvons travailler avec les fichiers de manière complètement complète sous Linux puisque nous avons vu chacune de ses options d'utilisation.

wave wave wave wave wave