SED en place Fichier d'édition

SED en place Fichier d'édition

«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:

    • Toute distribution Unix / Linux moderne. Pour ce guide, j'utiliserai Ubuntu 20.04 LTS fonctionnant sur VirtualBox.
    • Un émulateur de terminal approprié, de préférence avec une syntaxe mettant en évidence. Découvrez certains des meilleurs émulateurs terminaux sur Linux.

É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,

    • La commande echo imprime la chaîne sur Stdout. En savoir plus sur Stdin, Stdout et Stderr.
    • Nous tumons la sortie vers le sed Ici, Stdout est le flux sed qui effectuera la tâche spécifiée.
    • Le sed La commande, telle que spécifiée, recherchera toute instance du mot rapide et le remplacer par rapide. Le flux résultant sera imprimé sur la console.

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!