Commande sed Linux avec des exemples pratiques

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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.

Feuille de triche des commandes Linux


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/find("File Searching") linux/TextProcessingGroup -.-> linux/sed("Stream Editing") subgraph Lab Skills linux/echo -.-> lab-422906{{"Commande sed Linux avec des exemples pratiques"}} linux/cat -.-> lab-422906{{"Commande sed Linux avec des exemples pratiques"}} linux/find -.-> lab-422906{{"Commande sed Linux avec des exemples pratiques"}} linux/sed -.-> lab-422906{{"Commande sed Linux avec des exemples pratiques"}} end

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.

Feuille de triche des commandes Linux