Introduction
Dans ce labo, vous allez apprendre à utiliser la puissante commande sed (éditeur de flux) sous Linux pour le traitement et l'édition de texte. Le labo couvre les bases de la commande sed, notamment la substitution de texte, l'édition de plusieurs fichiers, etc. Vous allez explorer diverses commandes sed et leurs applications pratiques, ce qui vous permettra de manipuler et de transformer efficacement des données textuelles depuis la ligne de commande.
Le labo commence par l'introduction des bases de la commande sed, en démontrant comment afficher le contenu entier d'un fichier, afficher des lignes spécifiques, substituer du texte, supprimer des lignes et insérer ou ajouter du texte. Ensuite, il aborde des techniques de substitution de texte plus avancées, en vous montrant comment effectuer des substitutions sur plusieurs fichiers. Enfin, le labo couvre l'édition de plusieurs fichiers avec sed, vous permettant d'optimiser vos flux de travail de traitement de texte.
Comprendre les bases de la commande sed
Dans cette étape, nous allons apprendre les bases de la commande sed (éditeur de flux) sous Linux. La commande sed est un outil puissant pour le traitement et l'édition de texte, qui vous permet d'effectuer diverses opérations sur des fichiers texte.
Tout d'abord, créons un fichier texte d'exemple sur lequel travailler :
echo "This is a sample text file." > sample.txt
Maintenant, explorons quelques commandes sed de base :
Afficher le fichier entier
Pour afficher le contenu entier du fichier, utilisez la commande suivante :
sed 's/.*/' sample.txt
Exemple de sortie :
This is a sample text file.
Afficher une ligne spécifique
Pour afficher une ligne spécifique, utilisez le numéro de ligne avec la commande p :
sed -n '2p' sample.txt
Exemple de sortie :
This is a sample text file.
Substituer du texte
Pour substituer du texte, utilisez la commande s suivie du motif et du remplacement :
sed 's/sample/new/' sample.txt
Exemple de sortie :
This is a new text file.
Supprimer des lignes
Pour supprimer une ligne spécifique, utilisez la commande d suivie du numéro de ligne :
sed '2d' sample.txt
Exemple de sortie :
This is a sample text file.
Insérer ou ajouter du texte
Pour insérer du texte avant une ligne, utilisez la commande i. Pour ajouter du texte après une ligne, utilisez la commande a :
sed '2i This is an inserted line.' sample.txt
sed '2a This is an appended line.' sample.txt
Exemple de sortie :
This is a sample text file.
This is an inserted line.
This is a sample text file.
This is an appended line.
Ce ne sont que quelques exemples de base d'utilisation de la commande sed. Dans l'étape suivante, nous allons explorer des opérations sed plus avancées, telles que la substitution de texte dans plusieurs fichiers.
Effectuer des substitutions de texte avec sed
Dans cette étape, nous allons explorer des substitutions de texte plus avancées en utilisant la commande sed.
Tout d'abord, créons un nouveau fichier d'exemple contenant plusieurs occurrences du mot "old" :
echo "This is an old text. Replace the old text with new text." > sample.txt
Remplacer toutes les occurrences d'un mot
Pour remplacer toutes les occurrences d'un mot, utilisez le marqueur global g :
sed 's/old/new/g' sample.txt
Exemple de sortie :
This is an new text. Replace the new text with new text.
Remplacer seulement la première occurrence
Pour remplacer seulement la première occurrence, omettez le marqueur global g :
sed 's/old/new/' sample.txt
Exemple de sortie :
This is an new text. Replace the old text with new text.
Remplacer sur une ligne spécifique
Pour remplacer du texte sur une ligne spécifique, utilisez le numéro de ligne avant la commande s :
sed '1s/old/new/' sample.txt
Exemple de sortie :
This is an new text. Replace the old text with new text.
Remplacer en utilisant des expressions régulières
Sed prend également en charge les expressions régulières. Pour remplacer du texte en utilisant une expression régulière, utilisez la syntaxe \1 pour faire référence aux groupes capturés :
sed 's/\(This.*\)old\(.*\)/\1new\2/' sample.txt
Exemple de sortie :
This is an new text. Replace the new text with new text.
Remplacer dans plusieurs fichiers
Pour remplacer du texte dans plusieurs fichiers, passez les noms de fichiers en tant qu'arguments à la commande sed :
sed 's/old/new/g' sample.txt another_file.txt
Cela effectuera la substitution de texte dans les fichiers sample.txt et another_file.txt.
Dans l'étape suivante, nous allons apprendre à éditer plusieurs fichiers en utilisant la commande sed.
Éditer plusieurs fichiers avec sed
Dans cette étape, nous allons apprendre à utiliser la commande sed pour éditer plusieurs fichiers à la fois.
Tout d'abord, créons deux fichiers texte d'exemple :
echo "This is the first file." > file1.txt
echo "This is the second file." > file2.txt
Remplacer du texte dans plusieurs fichiers
Pour remplacer du texte dans plusieurs fichiers, il suffit de passer les noms de fichiers en tant qu'arguments à la commande sed :
sed 's/first/updated/g' file1.txt file2.txt
Exemple de sortie :
This is the updated file.
This is the second file.
Éditer les fichiers sur place
Par défaut, sed affiche la sortie modifiée dans la console. Pour éditer les fichiers sur place, utilisez l'option -i :
sed -i 's/second/new/g' file1.txt file2.txt
Maintenant, les fichiers file1.txt et file2.txt ont été modifiés directement.
Utiliser un fichier de sauvegarde
Si vous souhaitez conserver une sauvegarde des fichiers originaux, vous pouvez utiliser l'option -i avec une extension de sauvegarde :
sed -i.bak 's/new/updated/g' file1.txt file2.txt
Cela créera des fichiers de sauvegarde file1.txt.bak et file2.txt.bak contenant le contenu original.
Éditer les fichiers de manière récursive
Pour éditer les fichiers de manière récursive dans un répertoire, vous pouvez utiliser la commande find avec sed :
find . -type f -name "*.txt" -exec sed -i 's/updated/final/g' {} \;
Cela remplacera toutes les occurrences de "updated" par "final" dans tous les fichiers .txt du répertoire actuel et de ses sous-répertoires.
Avec ces techniques, vous pouvez éditer efficacement plusieurs fichiers en utilisant la commande sed. Cela peut être particulièrement utile lorsque vous avez besoin d'effectuer des remplacements ou des modifications de texte à grande échelle sur plusieurs fichiers.
Résumé
Dans ce labo, nous avons appris les bases de la commande sed sous Linux, notamment comment afficher le contenu entier d'un fichier, afficher des lignes spécifiques, effectuer des substitutions de texte, supprimer des lignes et insérer ou ajouter du texte. Nous avons également exploré des substitutions de texte plus avancées avec sed, en apprenant comment remplacer plusieurs occurrences d'un mot dans un fichier, ainsi qu'à éditer plusieurs fichiers simultanément avec sed.
Les principaux enseignements de ce labo sont la polyvalence et la puissance de la commande sed pour les tâches de traitement et d'édition de texte dans l'environnement Linux.



