Apprendre Linux

Remplacement de la chaîne dans Bash

Remplacement de la chaîne dans Bash

Bash est un processus de commande UNIX compatible shell dont la tâche principale est de manipuler des chaînes menées dans un environnement shell. Les programmeurs sont parfois appelés à travailler sur différents fichiers. Ils peuvent ajouter, supprimer et remplacer des parties ou le fichier entier pour s'adapter à leur travail. Cela fait appel à la connaissance du remplacement de la chaîne dans bash. Le stockage des données peut être temporaire ou permanent, selon la nature des données. La chaîne de fichier est essentielle lors du remplacement du contenu du fichier.

Remplacement de la chaîne dans Bash

sed est vital et est pratique pour aider à remplacer les chaînes dans un fichier par des scripts bash. L'éditeur de chaînes peut être utilisé de différentes manières pour remplacer le contenu du fichier dans bash. Un éditeur de chaîne alternatif mais sonore est awk qui peut être mis en jeu lors du remplacement de la valeur de chaîne d'un fichier à l'aide de bash. Cet article montrera à l'aide d'exemples comment le contenu du fichier peut être remplacé dans bash. Notez que la connaissance des modèles regex peut également être d'une grande valeur lors du remplacement de la chaîne dans bash.

Manipulation des cordes Bash

Lors de remplacements mineurs ou simples, le sed n'est pas requis. Bash peut faire la manipulation.

Par example:
Lors du remplacement d'un fosslinux.gif avec .mp4, sed n'est pas requis.
Pour exécuter le processus à l'aide de bash, utilisez le texte codé ci-dessous :

#/bin/bash file_name="fosslinux.gif" new_extension="mp4" # Remplacer .gif avec .mp4 generate_file_name=$file_name/.gif/.$new_extension echo nom_fichier_généré

Remplacement de String à l'aide de sed

sed peut être appelé un éditeur de flux. Sed peut remplacer une chaîne dans les fichiers. Regardons un exemple de fichier appelé singleboardbytes.txt contenant les informations suivantes :
Foss Linux est un excellent site d'apprentissage pour tout utilisateur de Linux. Consultez les articles publiés par Foss Linux sur leur site.

Maintenant, à partir de notre fichier, nous devons remplacer le mot "placer" avec "site Internet" et renommez le fichier en fosslinux.SMS.

Comprendre la syntaxe sed

sed -i 's/search_string/replace_string/' nom de fichier sed - est la commande utilisée dans l'exécution de la syntaxe ci-dessus '-je' - utilisé dans la modification du contenu du fichier d'origine avec une aide de chaîne de remplacement chaque fois que la valeur de recherche existe dans le fichier. 's' - c'est la commande de substitution 'chaîne_recherche' - cela représente la valeur de chaîne qui doit être recherchée pour le remplacement dans le fichier d'origine 'remplacer_chaîne' - cela représente la valeur de chaîne qui est utilisée pour remplacer la valeur recherchée. La chaîne doit correspondre à la chaîne trouvée par la commande 'search_string'. 'nom de fichier' - c'est le nom de fichier auquel le remplacement sera appliqué.

Exécutez la commande suivante dans votre terminal :

sed 's/site/website/g' singleboardbytes.txt > fosslinux.SMS

Remplacement de chaîne à l'aide de sed

Remarque : vous pouvez également exécuter la commande ci-dessus en la mettant en tant que script bash.
Remplacement à l'aide du -je commander

Après avoir exécuté la commande, l'étape suivante consiste à remplacer à l'aide du -je commander. -je est une représentation de "en place", ce qui signifie que le fichier est uniquement remplacé et qu'il n'y a pas de création de fichiers supplémentaires. En utilisant notre exemple ci-dessus, exécutez la commande suivante :

sed -i 's/site/website/g' singleboardbytes.SMS

Remplacement à l'aide de la commande -i

À partir de la figure ci-dessous, vous pouvez voir un point d'exclamation qui dit, Le fichier "/home/tuts/singleboardbytes.txt modifié sur le disque.” cela montre que les changements ont été effectués avec succès.

Modifications apportées à singleboardbytes.SMS

La figure ci-dessous est le fichier contenant les modifications apportées à l'étape précédente, à la fois au nom du fichier (singleboardbytes.txt vers fosslinux.txt) et le mot placer a été changé en site Internet.

Changement final après l'exécution de la commande sed

Utilisation d'une variable comme valeurs de recherche et remplacements

Avec un peu d'interpolation, les variables peuvent être utilisées pour effectuer un remplacement de chaîne. Le premier argument sed, dans ce cas, doit utiliser des guillemets doubles au lieu de guillemets simples. Par exemple, votre code sera similaire à celui ci-dessous :

tuts()  local search=$1 local replace=$2 # Notez les guillemets doubles sed -i "s/$search/$replace/g" singleboardbytes.SMS 

Utilisation d'une variable comme valeurs de recherche et remplacements

sed a deux saveurs, à savoir: le FreeBSD et le Linux sed. Les distributions Linux utilisent le sed Linux tandis que les utilisateurs d'OS X utilisent le sed FreeBSD. Ces saveurs sont assez différentes, et donc on ne peut pas transférer des commandes d'une saveur sed à une autre.

Par exemple, lors du remplacement du contenu du fichier à l'aide de FreeBSD, une sauvegarde doit être effectuée à l'aide du .bak extension. Ou vous pouvez lancer une sauvegarde en utilisant des paires de guillemets vides immédiatement après la notation -i, comme indiqué dans la syntaxe bash ci-dessous :

tuts()  local search=$1 local replace=$2 sed -i "" "s/$search/$replace/g" singleboardbytes.SMS 

Si une sauvegarde n'est pas effectuée lors de l'utilisation de FreeBSD comme illustré dans le code de syntaxe ci-dessus, vous tomberez dans une erreur comme celle illustrée ci-dessous :

sed : 1 : "/Users/user/path/tuts… " : caractères supplémentaires à la fin de la commande h

Comment remplacer un fichier et faire correspondre le modèle de chiffres à l'aide de la commande sed

Si vous exécutez le script avec succès, une recherche de tout le contenu numérique présent dans un fichier sera effectuée. Ensuite, le contenu sera alors remplacé par l'ajout de $ avant les chiffres.

#!/bin/bash # Vérifiez que la valeur de l'argument de la ligne de commande existe ou non si [ $1 != "" ]; then # Recherchez toutes les chaînes contenant des chiffres et ajoutez $ sed -i 's/\b[0-9]\5\\b/$&/g' $1 fi

Remplacement d'une chaîne à l'aide de la commande awk

Dans ce cas, nous utiliserons la commande awk au lieu de la commande sed pour remplacer le contenu d'un fichier. La différence entre ces commandes est que la commande sed met directement à jour le fichier d'origine, ce qui n'est pas le cas avec la commande awk.

#!/bin/bash # Vérifiez que la valeur de l'argument de la ligne de commande existe ou non si [ $1 != "" ]; then # Rechercher toutes les chaînes en fonction de la date awk 'sub("02/06/2020","12/06/2020")1' $1 > temp.txt && température mv.txt $1 fi

Conclusion

Les exemples ci-dessus sont essentiels pour votre progression dans l'apprentissage du remplacement d'une chaîne dans Bash. Par conséquent, pour être bon dans ce domaine, vous devrez pratiquer régulièrement. Rechercher et remplacer une chaîne dans un fichier peut sembler complexe, mais vous le trouverez beaucoup plus facile à gérer si vous suivez correctement nos instructions.

Un point à noter est que l'exécution des commandes peut parfois sembler plus gérable, mais vous devez faire attention à ne pas faire des ravages avec sed. Lorsque vous entrez les mauvaises commandes, vous cassez votre ordinateur, ce qui vous cause plus de problèmes comme la perte de données. Par conséquent, pour être sûr, copiez et collez toujours le code tel quel sur votre terminal. Cela évitera les fautes d'orthographe qui pourraient casser votre machine. Nous espérons que cet article vous a aidé à apprendre comment remplacer une chaîne dans bash en utilisant cet article.

Comment télécharger et jouer à Civilization VI de Sid Meier sur Linux
Présentation du jeu Civilization 6 est une version moderne du concept classique introduit dans la série de jeux Age of Empires. L'idée était assez sim...
Comment installer et jouer à Doom sur Linux
Introduction à Doom La série Doom est née dans les années 90 après la sortie du Doom original. Ce fut un succès instantané et à partir de ce moment-là...
Vulkan pour les utilisateurs Linux
Avec chaque nouvelle génération de cartes graphiques, nous voyons les développeurs de jeux repousser les limites de la fidélité graphique et se rappro...