Comment modifier du texte à l'aide d'expressions régulières avec sed Stream Editor

Contenu

Comment modifier du texte à l'aide d'expressions régulières avec sed Stream Editor

Tous les utilisateurs d'ordinateurs dans le monde, tôt ou tard, modifiera une chaîne de texte, soit manuellement, soit automatiquement. Être présenté au éditeur de flux mais, qui vous permet de faire des modifications massives de texte dans des chaînes et des fichiers.

Expressions régulières sur la ligne de commande

L'éditeur de séquence sed, un outil disponible par défaut sur de nombreuses distributions Linux, vous permet d'analyser et de transformer du texte de manière simple et directe, si ledit texte est à l'intérieur de fichiers ou simplement de simples chaînes sur la ligne de commande. Il peut également analyser les listes de répertoires, traiter les résultats de la liste et la plupart des autres types d'informations pouvant entrer ou sortir de votre session de terminal.

Pour vérifier si sed est activé sur votre distribution Linux, scribe sed --version sur la ligne de commande:

Version de l'éditeur de flux Sed

Ne vous inquiétez pas si votre version est un peu plus ancienne que celle montrée ici. Ce sera presque certainement bien pour les exemples dont nous discutons ici. Si l'outil n'est pas activé dans votre distribution, vous pouvez l'installer en utilisant sudo apt install sed pour les systèmes d'exploitation basés sur Ubuntu / Debian, O sudo yum install sed pour les systèmes d'exploitation basés sur RedHat / RPM.

sed appliquer une petite transformation de texte en utilisant ce qu'on appelle une expression régulière ou régulière. Une expression régulière est un moyen et une méthode d'expression des opérations de recherche, remplacement et modification textuels plus complexes dans un format encore lisible par l'homme. Les expressions régulières sont compliquées et peuvent être difficiles à lire pour les débutants. Vous pouvez lire notre guide, Comment utilisez-vous réellement Regex? Pour plus d'informations sur la lecture et l'écriture de Regex.

EN RELATION: Comment utilisez-vous réellement Regex?

Aux fins de ce poste, nous nous en tiendrons à des expressions régulières faciles à comprendre et à lire. Par exemple, ce qui suit est un simple remplacement:

Salut, Transformation des fans de Cloudsavvyit

Comme tu peux le voir, nous avons fait écho à un petit extrait de texte et, ensuite, nous le transformons à l'aide de l'outil sed. Nous utilisons la commande sed 's’ (remplacer) et nous indiquons ce que nous voulions changer. Vous pouvez lire ceci d'une autre manière comme s|from|to| où '|’ est le séparateur entre les sections / des champs, 's’ est la commande y' de’ et jusqu'à’ sont les deux options passées à la commande 's'.

Pour cela, nous transformons ¡Hola, fans des technologies de l'information en Cloud!’ une “Bonjour, fans de systempeaker.com!” modifier seulement une partie du texte à l'aide de l'éditeur de flux sed. Prenons un exemple un peu plus complexe.

Transformer du texte en fichier à l'aide de l'éditeur de flux sed

Ici, nous créons d'abord un fichier avec 3 lignes utilisant le echo commande avec redirection vers un fichier ('>’ créer un nouveau fichier, écraser un fichier du même nom s'il existe, et '>>’ est ajouté à un fichier sans le modifier autrement). Ensuite, nous montrons le contenu du fichier en utilisant le cat commander.

Plus tard, nous transformons le contenu du fichier avec le sed outil directement. Pour le faire, nous spécifions l'option '-i’ pour sed qui édite le fichier en place. L'instruction de transformation de texte réelle est la même qu'avant. Et enfin on précise le nom du fichier à la fin de la commande. Nous vérifions ensuite le contenu du fichier et remarquons comment notre entrée a changé.

Comment pouvez-vous commencer à voir, ou vous savez déjà par des expériences passées, il y a beaucoup de puissance disponible dans l'outil sed.

Pimentons un peu les choses en étendant notre regex et notre méthode d'écriture de l'instruction de transformation de texte sed:

Une expression régulière plus complexe et une instruction sed

Dans cet exemple, nous substituons la lettre 'h’ pour '_H’ et nous l'avons fait à l'échelle mondiale (regardez le qualificatif 'g’ vers la fin de la première instruction transmise à sed) et sans distinction entre majuscule et minuscule (observer la 'je’ qualificateur également vers la fin de la première déclaration). La ‘h’ correspond même lorsque le fichier contient 'H’ en raison du qualificatif 'i'.

Plus tard, nous commençons une nouvelle instruction (fin des instructions / terminer par ';’ comme dans beaucoup d'autres langages de codage) dans lequel nous supprimons '.com’ juste le chercher et le remplacer par rien.

Notez également comment nous avons utilisé différents séparateurs alternatifs de champ / commander. Dans le premier exemple, nous utilisons '|’ qui est généralement un séparateur de champ assez rare et facile à utiliser. Beaucoup de gens utilisent '/', même si cela peut entraîner des problèmes d'analyse des noms de route qui contiennent souvent '/'.

Être capable d'utiliser différents séparateurs de champs alternatifs / La commande vous permet d'utiliser facilement un autre séparateur si votre chaîne de texte contient réellement ou contiendra probablement un caractère spécifique.

Utiliser sed avec des fichiers

Explorons un autre exemple basé sur sed où nous injecterons du texte dans un fichier:

Injection de texte à l'aide de l'éditeur de flux sed

Dans cet exemple, nous créons un fichier avec 5 lignes, puis nous utilisons une instruction sed légèrement complexe pour injecter un séparateur '-‘ après chaque deuxième ligne. Bien que la syntaxe soit la plupart du temps explicite, Il est intéressant de noter que la commande 'r’ (lire / ajouter du texte à partir d'un fichier) spécifie le nom du fichier d'injection directement et tout en restant à l'intérieur de l'instruction principale, sans aucun séparateur.

Vous pouvez aussi commencer à voir que, tout en apprenant une syntaxe d'expression régulière, il est bénéfique d'apprendre la syntaxe sed en profondeur. C'est presque comme apprendre deux nouvelles langues étrangères, mais l'avantage est que la syntaxe sed peut évoluer avec votre besoin de complexité supplémentaire.

Explorons un exemple où nous remplaçons une zone de texte spécifique par autre chose:

Modifier des zones de texte spécifiques à l'aide de soif

Dans cet exemple, on cherche le texte '3', et pour cette ligne nous substituerons 'C’ par 'Z'. Vous voyez à quel point la soif peut être polyvalente.

Pour terminer, nous pouvons analyser l'analyse d'autres types d'entrée:

Analyser d'autres types de saisie textuelle avec sed

Comme tu peux le voir, nous créons 3 fichiers et demander une liste de répertoires en utilisant le ls commander. Plus tard, nous prenons cette sortie comme entrée de sed (en utilisant la commande pipe linux, '|') et nous transformons une partie de notre liste d'annuaires en un trait de soulignement.

L'éditeur de séquence sed est un outil polyvalent qui peut vous aider à analyser et transformer presque n'importe quel texte directement à partir de la ligne de commande du terminal, si l'entrée provient d'un simple echo déclaration, d'autres outils Linux ou à partir d'un fichier texte brut. Prendre plaisir!

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.