capture filre AWK - Shell/Batch - Programmation
Marsh Posté le 31-08-2006 à 14:52:35
clancy a écrit : Hello, |
awk utilise par défaut l'espace pour séparer ses champs. Toi, tu as 2 séparateurs: le "=" avant et le "/" après. Je ne pense pas que "awk" sache utiliser 2 séparateurs à la fois...
Moi, je le ferais avec "cut"
echo "$valeur_complete" |cut -d= -f2 |cut -d/ -f1 |
Marsh Posté le 31-08-2006 à 18:22:24
echo $var | awk -F= '{ split($2,arr,"//" ) ; print arr[1]}' |
Par exemple.
Marsh Posté le 31-08-2006 à 20:05:33
La valeur du séparateur de champ FS peut être une expression réguliere.
Dans ton cas on peut définir définir FS comme étant '=' ou '//'.
echo $var | awk -F'=|//' '{print $2}' |
Cette solution a bien sur ses limites, par exemple il ne faut pas qu'il y ait '//' avant '='. On peut être un peu plus précis, en spécifiant 'context=|//' pour FS.
Jean-Pierre.
Modif: Ajout awk manquant.
Marsh Posté le 01-09-2006 à 07:35:14
aigles> Tu as oublié le "awk" dans ta commande
Sinon je ne connaissais pas le mutli FS, ça pouvait être sympa mais hélas ça ne semble pas être un standard awk. En tout cas awk et nawk Solaris n'en veulent pas
Marsh Posté le 02-09-2006 à 12:28:02
Deadlock a écrit : aigles> Tu as oublié le "awk" dans ta commande |
Correction effectuée
Citation : Sinon je ne connaissais pas le mutli FS, ça pouvait être sympa mais hélas ça ne semble pas être un standard awk. En tout cas awk et nawk Solaris n'en veulent pas |
Que awk ne gére pas les ERE pour FS ne me semble pas impossible, par contre en ce qui concerne nawk ça m'étonne beaucoup.
Sur AIX il n'y a pas de problème, de même sous Windows avec gawk et mawk .
J'ai trouvé le man de nawk pour Solaris sur le Net. Il est bien indiqué que l'option -F est une ERE.
NAME |
Marsh Posté le 04-09-2006 à 09:20:59
Effectivement. Ca va me "changer la vie" cette histoire ! Merci JP
root@milan:[/root]# echo "test1,test2:test3//test4" | nawk -F',|:|[/]+[/]' '{ print $1 }' |
Marsh Posté le 04-09-2006 à 22:53:52
Deadlock a écrit : Effectivement. Ca va me "changer la vie" cette histoire ! Merci JP
|
Travailler directement sous le compte "root" c'est mal
Marsh Posté le 04-09-2006 à 23:22:13
Je me souviens du temps où j'étais jeune et insouciant, j'avais l'habitude de taper "kill -9 -1" sur mon linux perso pour me déconnecter. Et puis un jour j'ai pas fait gaffe, et je l'ai fait en temps que root.
SIGKILL sur le processus initd, alors que probablement il faisait plein de choses traÿ traÿ importantes...
... j'ai eu le droit de réinstaller mon système.
Voila, une anecdote de retour de vacances pour dire que bosser sous root çaÿ mal, et qui change un peu du traditionnel rm -rf
Marsh Posté le 05-09-2006 à 08:43:25
Sve@r a écrit : Travailler directement sous le compte "root" c'est mal |
Quand tu travailles dans un environnement de plus de 300 hosts trustés par un seul, que 90% des commandes usuelles sont root only ... tu travailles en root crois moi. Mais bon entre les "bonnes manières scolaires" et la vraie vie ...
Marsh Posté le 07-09-2006 à 23:32:58
Elmoricq a écrit : Je me souviens du temps où j'étais jeune et insouciant, j'avais l'habitude de taper "kill -9 -1" sur mon linux perso pour me déconnecter. Et puis un jour j'ai pas fait gaffe, et je l'ai fait en temps que root. |
Moi j'avais l'habitude de purger "/tmp" en faisant
cd /tmp |
Puis, un jour, j'ai voulu aller plus vite et j'ai tapé "rm -fr /tmp/* /tmp/.*" et là, le système m'a pas rendu la main. Ca a duré 20 secondes avant que je ne réalise que dans "/tmp/.*", il y avait aussi "/tmp/.."
Marsh Posté le 31-08-2006 à 14:39:29
Hello,
J'ai encore un petit souci avec AWK,
j'arrive pas à capture le resultat d'un filtre, je m'explique:
aaaaaaa|bbbbbbb;context=abchgfhgf//ddddd 11111 2222 3333
si je veux récupérer la chaine abchgfhgf en faisaint un filtre;
sachant la valeur que peut prend le contexte change tout le temps et n'ai pas de la meme longueur ,est possible?
je veux donc capturer cette valeur de facon a ce que print $1 m'affiche : abchgfhgf
un peu à la perl en fait
j'ai l'impression que en awk, on ne peut pas capturer un morceau de chaine, $x ne prend que des valeurs de champs.
merci d'avance.
Message édité par clancy le 31-08-2006 à 14:43:53