«Dans l'écosystème UNIX / Linux, la commande SED est un outil dédié pour l'édition de flux, d'où le nom (éditeur de flux). Il reçoit des entrées de texte en tant que «flux» et effectue les opérations spécifiées sur le flux."
Dans ce guide, nous explorerons la réalisation d'édition de fichiers sur place avec SED.
Conditions préalables
Pour effectuer les étapes démontrées dans ce guide, vous aurez besoin des composants suivants:
Édition de flux à l'aide de SED
Tout d'abord, jetons un bref aperçu du fonctionnement du SED. La structure de commande de SED est la suivante:
$ sed
La commande suivante présente un flux de travail simple de SED:
$ echo "The Quick Brown Fox" | sed -e / rapide / rapide / '
Ici,
Et si nous voulions modifier les textes d'un fichier texte? La commande SED peut également fonctionner à l'aide de fichiers texte comme flux. Pour une démonstration, j'ai saisi le fichier texte suivant:
$ Cat Demo.SMS
La commande SED suivante remplacera toutes les instances de le avec da:
$ SED -E 'S / LA DÉMO.SMS
Vérifiez le contenu de démo.SMS pour les changements:
$ Cat Demo.SMS
D'après le dernier exemple, nous pouvons voir que SED a uniquement imprimé le flux résultant sur la console. Le fichier source (démo.SMS) n'a pas été touché.
Édition de fichiers sur place à l'aide de SED
Comme démontré à partir de l'exemple précédent, l'action par défaut de SED est d'imprimer le contenu modifié à l'écran. C'est une excellente fonctionnalité qui peut empêcher les modifications accidentelles des fichiers. Cependant, si nous voulions enregistrer les modifications du fichier, nous devions fournir des options supplémentaires.
Une technique simple et commune serait de remplacer le contenu du fichier par le sed sortir. Jetez un œil à la commande suivante:
$ Cat Demo.txt | sed 's / le / da / g' | démo de tee-shirt.SMS
Ici, nous écrasons le contenu de démo.SMS avec la sortie du sed commande.
Bien que la commande fonctionne comme prévu, il nécessite de taper des codes supplémentaires. Nous avons impliqué les commandes Cat and Tee avec la commande SED. Bash est également impliqué dans la redirection des sorties. Ainsi, la commande est plus à forte intensité de ressources qu'elle ne doit être.
Pour résoudre ce problème, nous pouvons utiliser la fonction d'édition en place de SED. Dans ce mode, sed modifiera directement le contenu du fichier. Pour invoquer le mode d'édition sur place, nous devons utiliser le -je ou -en place drapeau. Ce qui suit sed La commande l'intecte:
$ sed --in-place -e 's / the / da / g' Demo.SMS
Vérifier démo.SMS pour les changements:
$ Cat Demo.SMS
Comme vous pouvez le voir, le contenu du fichier est modifié sans ajouter de composants supplémentaires.
Dernières pensées
Dans ce guide, nous avons réussi à démontrer la réalisation de modifications en place sur les fichiers texte en utilisant sed. Alors que SED lui-même est un programme simple, la principale source de puissance réside dans sa capacité à incorporer des expressions régulières. Regex permet de décrire des modèles très complexes sur lesquels SED agit. Découvrez Regex dans SED pour en savoir plus en profondeur.
Alternativement, vous pouvez utiliser des scripts bash pour filtrer et modifier le contenu d'un fichier. En fait, vous pouvez intégrer SED dans vos scripts pour affiner le contenu du texte. Consultez ce guide sur le démarrage avec les scripts bash.
Happy Computing!