- 1. Comment utiliser la commande SED sous Linux
- 2. Sélection de texte avec la commande SED Linux
- 3. Comment créer des remplacements avec SED Linux
- 4. Options de remplacement SED sous Linux
- 5. Insérer des lignes et du texte avec SED sous Linux
- 6. Comment supprimer une ligne avec SED Linux
- 7. Comment enregistrer les modifications avec SED sous Linux
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.txtDans 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.txtDans 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.txtSi 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.txtL'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.txtOn 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 / passwdUne 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.txtPour 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.txtNous 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.