[awk] suppression d'un élément pour comparer

dobson -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
bonjour,

comment faire pour supprimer le dernier élément d'un chemin avec awk,
et comparer le nouveau chemin avec une liste de chemins?

Par exemple, mon chemin:
1. je prends le chemin /usr/bin/cp
2. je supprime cp de la chaîne de caractères "/usr/bin/cp"
3. je compare la nouvelle chaîne "/usr/bin" avec une chaîne.

Merci

3 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Tu pourrais faire comme suit (il y a surement d'autres façons de faire) :
    echo "/usr/bin/cp" | awk -F "/" '{ if($2 ~ /usr/ && $3 ~ /bin/) { print "OK" } }'
    ;-))
    0
  2. dobson
     
    voilà, j'ai amélioré mon script:

     
    #! /bin/ksh
    
    PATH_SCP=`whence scp | sed "s/scp//"`
    echo $PATH_SCP
    LS_PATH=`echo $PATH | sed "s/:/ /g"`
    #echo $LS_PATH
    for path in $LS_PATH
            do echo "$path"
                    if ( $path == $PATH_SCP )
                    then echo "scp in path"
                    fi
            done
    


    seulement un problème demeure:

    lorsque je compare mes 2 strings $path et $PATH_SCP,

    j'obtiens:

    /usr/local/sbin
    ./check_bins.ksh[9]: /usr/local/sbin: cannot execute
    /usr/local/bin
    ./check_bins.ksh[9]: /usr/local/bin: cannot execute
    /usr/sbin
    ./check_bins.ksh[9]: /usr/sbin: cannot execute
    /usr/bin
    ..........

    qui peut me dire pourquoi cette erreur apparaît?

    Merci
    0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    $ chemin=$(dirname $(which scp))
    $ echo $chemin
    /usr/bin
    $ pass=$(echo $PATH | sed "s/:/ /g")
    $ echo $pass
    /bin /usr/bin /usr/local/bin /usr/X11R6/bin/ /usr/games /home/jp/bin
    $ for nom in $(echo $pass); do if [ "$nom" = "$chemin" ]; then echo "scp in path"; fi; done
    scp in path
    $
    ;-))
    0