[awk] suppression d'un élément pour comparer
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
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
-
ModérateurSalut,
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" } }';-))
-
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 -
ModérateurSalut,
$ 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 $
;-))