Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/12/2019, à 16: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, à 11:35)

Hors ligne

#2 Le 08/12/2019, à 17: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, à 18: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.

Hors ligne

#4 Le 08/12/2019, à 19: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, à 19: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, à 19: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, à 20:26

diesel

Re : [résolu] extraire un mot dans une liste

babeudoua a écrit :

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. wink smile smile

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