0Pricing
Linux Command Line & Bash Scripting Mastery · Leçon

Combiner les expressions régulières avec sed/awk

Intégrez des expressions régulières aux commandes « sed » et « awk » pour filtrer, remplacer et extraire des données dans des textes avancés.

Combiner les expressions régulières avec sed/awk est une leçon Linux Command Line & Bash Scripting Mastery gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Linux Command Line & Bash Scripting Mastery, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Linux Command Line & Bash Scripting Mastery comprend 4 leçons au total.

Expressions régulières avec sed et awk

Bienvenue dans la dernière leçon sur les expressions régulières ! Nous avons découvert la puissance des expressions régulières pour la recherche de motifs.

À présent, combinons cette puissance avec deux outils Linux essentiels : sed (éditeur de flux) et awk (langage d’analyse et de traitement de motifs). Cette combinaison permet un filtrage, un remplacement et une extraction de données très avancés.

sed : filtrer avec des expressions régulières

sed peut utiliser des expressions régulières pour filtrer des lignes. L’adresse /pattern/ permet à sed d’appliquer des commandes uniquement aux lignes correspondant à l’expression régulière donnée.

L’option -n désactive la sortie par défaut, tandis que p affiche explicitement les lignes correspondantes.

echo -e "apple
banana
orange" | sed -n '/an/p'

sed : remplacer avec des expressions régulières

Dans sed, la commande s/regex/replacement/ révèle toute la puissance des expressions régulières pour transformer du texte. Vous pouvez remplacer les motifs trouvés par votre expression régulière par un nouveau texte.

Le marqueur g remplace toutes les occurrences d’une ligne, et i rend la correspondance insensible à la casse.

echo "Hello world, hello universe" | sed 's/hello/hi/gi'

sed : groupes capturants et références arrière

Les expressions régulières vous permettent de définir des groupes capturants à l’aide de parenthèses (). Vous pouvez ensuite faire référence au texte correspondant à ces groupes dans la chaîne de remplacement au moyen de références arrière telles que \1, \2, etc.

Utilisez -E avec sed pour la syntaxe des expressions régulières étendues (par exemple, pour utiliser () sans échappement).

echo "Doe, John" | sed -E 's/([A-Za-z]+), ([A-Za-z]+)/\2 \1/'

awk : filtrer des enregistrements avec des expressions régulières

awk utilise des motifs d’expressions régulières pour sélectionner des enregistrements (lignes) avant d’effectuer des actions. Si un motif est fourni avant un bloc d’action {...}, l’action n’est exécutée que pour les lignes correspondant au motif.

C’est similaire à grep, mais cela permet un traitement plus complexe.

echo -e "Line 1: apple
Line 2: banana
Line 3: orange" | awk '/banana/'

awk : expressions régulières sur des champs précis

Vous pouvez appliquer des motifs d’expressions régulières à des champs précis dans awk à l’aide des opérateurs ~ (correspond) et !~ (ne correspond pas). C’est très puissant pour les données structurées.

Par exemple, $1 ~ /pattern/ vérifie si le premier champ correspond à l’expression régulière.

echo "Name: John, Age: 30
Name: Jane, Age: 25" | awk '$1 ~ /Name/ {print $2}'

awk : extraire des correspondances (match, substr)

awk fournit des fonctions telles que match(string, regex) pour trouver la position et la longueur d’une correspondance, et substr(string, start, length) pour l’extraire.

Après match(), RSTART contient la position de début et RLENGTH contient la longueur de la correspondance.

echo "ItemCode: ABC123 Price: 45.67" | awk '{match($0, /[0-9]+\.[0-9]+/); print substr($0, RSTART, RLENGTH)}'

awk : remplacement sur place (sub, gsub)

awk possède également des fonctions intégrées de remplacement : sub(regex, replacement, target) pour la première correspondance et gsub(regex, replacement, target) pour toutes les correspondances.

Si target est omis, $0 (l’enregistrement entier) est utilisé. Vous pouvez indiquer un champ tel que $1.

echo "apple,banana,orange" | awk '{gsub(/a/, "X", $0); print}'

Choisir entre sed et awk

Bien que sed et awk puissent tous deux utiliser des expressions régulières pour le remplacement et le filtrage, ils excellent dans des domaines différents :

  • sed convient généralement mieux aux transformations et aux remplacements simples, ligne par ligne. C’est un éditeur de flux.
  • awk est plus puissant pour traiter des données structurées (champs), effectuer des calculs et gérer une logique plus complexe ou des motifs répartis sur plusieurs lignes. C’est un langage de programmation à part entière.

Ils peuvent souvent être enchaînés avec des tubes | pour réaliser des tâches très complexes.

Défi : extraire et transformer

Considérez la ligne de texte suivante :

Order#12345: ProductX - Price $19.99

Quelle commande permettrait d’extraire correctement le prix (par exemple « 19.99 »), puis de remplacer le symbole monétaire par « EUR » ?

Récapitulatif : expressions régulières avec sed et awk

Vous maîtrisez désormais la combinaison des expressions régulières avec sed et awk !

  • sed excelle dans le filtrage et le remplacement de texte ligne par ligne, en utilisant les expressions régulières pour une recherche de motifs et un remplacement puissants.
  • awk offre une approche plus programmatique, permettant aux expressions régulières de filtrer des enregistrements, d’effectuer des recherches dans des champs précis et d’extraire ou de modifier des données à l’aide de fonctions telles que match(), substr(), sub() et gsub().

Cette compétence est essentielle pour le traitement avancé du texte et la création de scripts sous Linux.

Questions Fréquemment Posées

La leçon « Combiner les expressions régulières avec sed/awk » est-elle gratuite ?

Oui — le texte complet de « Combiner les expressions régulières avec sed/awk » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Linux Command Line & Bash Scripting Mastery, passe à CoddyKit PRO. Le cours Linux Command Line & Bash Scripting Mastery comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Combiner les expressions régulières avec sed/awk » ?

Intégrez des expressions régulières aux commandes « sed » et « awk » pour filtrer, remplacer et extraire des données dans des textes avancés. Tu pratiques Linux Command Line & Bash Scripting Mastery avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Linux Command Line & Bash Scripting Mastery ?

Aucune expérience préalable n'est requise. Linux Command Line & Bash Scripting Mastery sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Combiner les expressions régulières avec sed/awk » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Linux Command Line & Bash Scripting Mastery ?

Oui. Chaque leçon Linux Command Line & Bash Scripting Mastery inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Introduction aux expressions régulières (Regex)
  2. Grep avancé avec les expressions régulières
  3. Combiner les expressions régulières avec sed/awk
  4. Groupes de capture, références arrière et substitution
← Retour à Linux Command Line & Bash Scripting Mastery