[awk] Extraire une donnée sur une ligne
Résolu
marco.marco
Messages postés
29
Date d'inscription
Statut
Membre
Dernière intervention
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour !
Une petite colle pour les pros du awk (ou du sed, cut and co ;-)):
Je voudrais, sous linux/unix, extraire une donnée sur une ligne de type :
|donnée1: nombre1|donnée2: nombre2|donnée3: nombre3|donnée4: nombre4|
Il me faudrait dans cet exemple récupérer "nombre3" à partir de "donnée3".
Je pourrais le faire avec un awk du style
awk -F "|" '{print $3}'' | cut -d":" -f2
Mais ca impliquerait que je sache qu'il soit placé en 3ème position dans ma ligne ce qui n'est pas le cas, je ne connais que "donnée3". Et avec un grep de ce "donnée3" je récupère toute la ligne...
Qulqu'un pourrait m'aider ??
Merci !!!
Une petite colle pour les pros du awk (ou du sed, cut and co ;-)):
Je voudrais, sous linux/unix, extraire une donnée sur une ligne de type :
|donnée1: nombre1|donnée2: nombre2|donnée3: nombre3|donnée4: nombre4|
Il me faudrait dans cet exemple récupérer "nombre3" à partir de "donnée3".
Je pourrais le faire avec un awk du style
awk -F "|" '{print $3}'' | cut -d":" -f2
Mais ca impliquerait que je sache qu'il soit placé en 3ème position dans ma ligne ce qui n'est pas le cas, je ne connais que "donnée3". Et avec un grep de ce "donnée3" je récupère toute la ligne...
Qulqu'un pourrait m'aider ??
Merci !!!
A voir également:
- [awk] Extraire une donnée sur une ligne
- Extraire une video youtube - Guide
- Extraire le son d'une vidéo - Guide
- Partager photos en ligne - Guide
- Extraire texte d'une image - Guide
- Mètre en ligne - Guide
4 réponses
Salut,
Avec "sed" :
;-))
Avec "sed" :
$ echo $A |donnée1: nombre1|donnée2: nombre2|donnée3: nombre3|donnée4: nombre4| $ echo $A | sed -n '/donnée3/s/.*donnée3: \([^|]*\).*/\1/p' nombre3
;-))
Merci jipicy + lami20j :-)))))))))))
Je m'égarais avec mon awk...
Le grep -o ou le sed fonctionnent tous les 2, j'ai donc gardé le grep, un peu plus court (et un peu moins complexe pour moi ;-))
J'ai juste du remplacer les premieres apostrophes, juste après le -o du grep, par des guillemets sinon ca ne passait pas: le "donnée3" est variabilisé...
Et je me suis permis de remplacer le sed par un cut (histoire de dire que j'ai un peu bossé quand meme ;-))))), ce qui au final revient au meme...
grep -o "${donnee3}:[^|]*" nom_fichier |cut -d":" -f2
Je m'égarais avec mon awk...
Le grep -o ou le sed fonctionnent tous les 2, j'ai donc gardé le grep, un peu plus court (et un peu moins complexe pour moi ;-))
J'ai juste du remplacer les premieres apostrophes, juste après le -o du grep, par des guillemets sinon ca ne passait pas: le "donnée3" est variabilisé...
Et je me suis permis de remplacer le sed par un cut (histoire de dire que j'ai un peu bossé quand meme ;-))))), ce qui au final revient au meme...
grep -o "${donnee3}:[^|]*" nom_fichier |cut -d":" -f2