[shell_ksh] Problème avec awk

Résolu
Bonjour,

Je viens vers vous car je bloque sur une utilisation de awk.
J'ai un fichier qui ressemble à un truc du genre

a B c toto e f ....
a B c titi e f ....
a B c toto e f ....
a B c tutu e f ....
a B c toto e f ....
a B c toto e f ....
a B tutu toto e f ....
....
avec les espaces qui sont des tabulations.

j'ai une chaine qui est
ChercheMot="tutu titi tata" (la les espaces sont vraiment des espaces :) )
je cherche un moyen d'ecrire les lignes avec awk, mais la je galère :
awk -F'\t' -v mot="$ChercheMot" '{ if (mot == "$4") print $0; else print "y a pas"}' fichier_In.txt

Et il me met que des "Y a pas".
Quelqu'un connait il la syntaxe d'une recherche d'une chaine dans une autre dans un if d'un awk? (Pas très clair je sens cette phrase :p)

Merci par avance

1 réponse

  1. Contributeur
    hello
    comme ça ?
    $ awk  -v mot="$ChercheMot" '{if (mot ~ $4) print $0; else print "y a pas"}' fichier
    y a pas
    a B c titi e f ....
    y a pas
    a B c tutu e f ....
    y a pas
    y a pas
    y a pas
    1
    1. Ha oui, ça marche bien en effet :-o
      Merci beaucoup.
      J aurai une question en plus:
      Je peux avoir dans ma chaîne ChercheMot="tata titi tutu totoro ". Y a t il un moyen simple pour que les ligne contenant toto ne s affiche pas? Car on va trouver toto dans le mot totoro.
      Encore merci pour la réponse
      0
    2. Contributeur
      en testant chaque mot de la chaine
      $ ChercheMot="tutu titi tata totoro"
      $ awk -v mot="$ChercheMot" 'BEGIN {split(mot, t)} {for(n in t)if (t[n] == $4) print $0; else print "y a pas"}' fichier
      0
    3. @dubcekUn grand merci dubcek, c'est exactement ce qu'il me faut!!
      C est un double résolu que tu mérites :)
      0