#1 Le 08/12/2019, à 15:39
- babeudoua
[résolu] extraire un mot dans une liste
bonjour,
je souhaite pouvoir extraire un mot d'une liste dont le séparateur est ":"
je souhaite que le mot recherché contienne le nombre "5" et seulement "5". En d'autre terme, ma ligne de commande doit me restituer "4°5"
$ lst="54°89:4°5:36°23:18°19"; nb="5"; echo $lst | awk -F ':' "/\\<[0-9]+°$nb\\>/ || /\\<$nb°[0-9]+\\>/ {print \$0}"
awk demande des simples quotes pour définir la partie 'critère {action}'. J'ai mis les doubles quotes afin que la bash réalise la substitution de variable. Ces doubles quotes réclament des protections contre la substitution de certains caractères.
Mon expression régulière ne semble pas fonctionner normalement avec awk puisque la commande n'affiche rien à l'écan. Par contre, un echo $? m'affiche bien 0.
merci de votre aide.
Dernière modification par babeudoua (Le 11/10/2020, à 10:35)
Hors ligne
#2 Le 08/12/2019, à 16:01
- pingouinux
Re : [résolu] extraire un mot dans une liste
Bonjour,
Ta commande récupère toute la ligne.
Voici une solution, avec grep :
grep -Po "\b(\d+°$nb|$nb°\d+)\b" <<<"$lst"
Hors ligne
#3 Le 08/12/2019, à 17:46
- Watael
Re : [résolu] extraire un mot dans une liste
$ lst="54°89:4°5:36°23:18°19"; nb="5"; echo "$lst" | awk -v nb="$nb" -F ':' '{for(i=1;i<=NF;i++)if( $i ~ "^[0-9]+°"nb"$" || $i~"^"nb"°[0-9]+$" )print $i}'
4°5
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#4 Le 08/12/2019, à 18:18
- LeoMajor
Re : [résolu] extraire un mot dans une liste
bonjour,
lst="54°89:4°5:36°23:18°19:-0°9:-15°36"
awk '{nf=patsplit($0,p,/[+-]?[0-9]+°[0-9]+/); for(i=1;i<=nf;i++)if(p[i]~/5/)print p[i] }' <<<"$lst"
54°89
4°5
-15°36
qui contient 5
awk '{nf=patsplit($0,p,/[+-]?[0-9]+°[0-9]+/); for(i=1;i<=nf;i++)if(p[i]~/5$/)print p[i] }' <<<"$lst"
4°5
qui finit en 5
J'utiliserai plutôt 1.5 au lieu de 1°5 comme syntaxe ( genre question; préciser les données entre -1.1 et +4.6 )
Hors ligne
#5 Le 08/12/2019, à 18:49
- babeudoua
Re : [résolu] extraire un mot dans une liste
Merci pour les solutions.
Je viens juste de m'inscrire. La réactivité est impressionnante.
Je ne sais pas comment on clôture un sujet en "résolu". Quelqu'un peut-il me le dire?
merci encore pour vos solutions
Hors ligne
#6 Le 08/12/2019, à 18:50
- pingouinux
Re : [résolu] extraire un mot dans une liste
Je ne sais pas comment on clôture un sujet en "résolu". Quelqu'un peut-il me le dire?
Tu modifies ton premier message, en ajoutant [Résolu] dans le titre.
Hors ligne
#7 Le 08/12/2019, à 19:26
- diesel
Re : [résolu] extraire un mot dans une liste
Merci pour les solutions.
Je viens juste de m'inscrire. La réactivité est impressionnante.Je ne sais pas comment on clôture un sujet en "résolu". Quelqu'un peut-il me le dire?
merci encore pour vos solutions
On a ici quelques pointures de la ligne de commande.
Amicalement.
Jean-Marie (petit scarabée de la ligne de commande).
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne