sed et awk
Transformer du texte en ligne de commande : la substitution et les adresses de sed, les champs, les motifs, BEGIN, END et les sommes d'awk.
- 29 cartes
- 5 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
- Comprendre
Quelques cartes du deck
sed : de quoi s'agit-il ?
Voir la réponse
Éditeur de flux qui lit un texte ligne par ligne, applique à chacune des commandes (substituer, supprimer, afficher) et écrit le résultat sur sa sortie.
Il ne modifie pas le fichier lu : sans
-i, le résultat va sur la sortie standard. La commande la plus courante ests/motif/remplacement/.Qu'affiche cette commande ?
```bash
echo 'a-b-c' | sed 's/-/+/2'`a-b+ca+b-ca+b+ca-b-c+
Voir la réponse
a-b+cLe nombre à la fin de
sdésigne l'occurrence à remplacer : le deuxième tiret devient+, la première reste. Sans nombre, c'est la première ; avecg, toutes.Dans sed, la commande
s/a/b/ne remplace que la première occurrence de chaque ligne ; pour les remplacer toutes, on ajoute le drapeau ….Voir la réponse
Dans sed, la commande
s/a/b/ne remplace que la première occurrence de chaque ligne ; pour les remplacer toutes, on ajoute le drapeau g.echo a-b-c | sed 's/-/+/'donnea+b-cet avecga+b+c. Un nombre à la place, commes/-/+/2, vise la deuxième occurrence :a-b+c.awk : de quoi s'agit-il ?
Voir la réponse
Langage de traitement de texte qui découpe chaque ligne en champs et exécute une action sur celles qui répondent à un motif.
Un programme est une suite de
motif { action }. Sans motif, l'action vaut pour toutes les lignes ; sans action, la ligne est affichée.Le remplacement
sed 's/usr/sbin/bin/' chemins.txtéchoue avec « unknown option to s ». Quelle correction est juste ?sed 's#usr/sbin#bin#' chemins.txtsed 's/usr/sbin/bin/g' chemins.txtsed -n 's/usr/sbin/bin/' chemins.txtsed 's/usr/sbin/' chemins.txt
Voir la réponse
sed 's#usr/sbin#bin#' chemins.txtLes barres obliques du chemin sont lues comme des séparateurs de
s: sed y trouve trop de parties et prendbin/pour un drapeau. On change le séparateur, ici#, ou on protège chaque barre par\.get-nn'y changent rien.