A voir également:
- Script shell - aidez une pauvre débutante
- Script vidéo youtube - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
- Ghost script - Télécharger - Polices de caractères
- Microsoft activation script - Accueil - Windows
- Script bat - Guide
5 réponses
Coucou,
c'est compliqué ton truc mais tu a surement une bonne raison de vouloir faire comme cela ;)
je connais peu le script shell (bash), plutot pour faire des trucs simple, je sais pas comment lire un fichier, etc..
je sais pas si on peut le faire ainsi, et je pense qu'il vaut mieux passer par des scripts perl (la syntaxe est chiante mais c'est très puissant), et pour ca par contre je peut t'aider.
sinon, en shell, je sais qu'il y a la commande "cut" pour séparer des chaines avec un délimiteur,
quelqu'un d'autre serait faire ca en shell ?
bon courage :)
c'est compliqué ton truc mais tu a surement une bonne raison de vouloir faire comme cela ;)
je connais peu le script shell (bash), plutot pour faire des trucs simple, je sais pas comment lire un fichier, etc..
je sais pas si on peut le faire ainsi, et je pense qu'il vaut mieux passer par des scripts perl (la syntaxe est chiante mais c'est très puissant), et pour ca par contre je peut t'aider.
sinon, en shell, je sais qu'il y a la commande "cut" pour séparer des chaines avec un délimiteur,
quelqu'un d'autre serait faire ca en shell ?
bon courage :)
LtSoldier
Messages postés
23
Date d'inscription
mardi 29 avril 2008
Statut
Membre
Dernière intervention
25 juillet 2008
2
29 avril 2008 à 22:54
29 avril 2008 à 22:54
Bonjour,
A tu penser à la commande "awk" ?
A tu penser à la commande "awk" ?
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
29 avril 2008 à 22:59
29 avril 2008 à 22:59
Salut,
t'es sûre que tu veux ça?
d'après ton explication le 2ème paramètre ne devrait être plutôt VAL7 ?!
voici un exemple
t'es sûre que tu veux ça?
d'après ton explication le 2ème paramètre ne devrait être plutôt VAL7 ?!
voici un exemple
$ cat a.txt param1;10-4-4;lbellé x param2;15-8-4;lbellé y $ cat b.txt 10 VAL1 VAL2 VAL3 15 VAL5 VAL6 VAL7 $ for i in $(cat a.txt|cut -d';' -f2);do echo -e "$i \c";grep "${i%%-*}" b.txt|cut -d' ' -f3;done 10-4-4 VAL2 15-8-4 VAL6
J'ai fait un truc en bash (je pense que ca devrait marcher en "ksh")
ca lit le 1er fichier dans un tableau, puis ensuite le 2eme fichier en parcourant le tableau a chaque ligne,
j'espère que ca t'aidera !
je peut difficilement aller plus loin en bash, je ne connait pas grand chose.
ca lit le 1er fichier dans un tableau, puis ensuite le 2eme fichier en parcourant le tableau a chaque ligne,
j'espère que ca t'aidera !
je peut difficilement aller plus loin en bash, je ne connait pas grand chose.
#!/bin/bash fichier1="fic1.txt" fichier2="fic2.txt" # boucle sur le fichier "fic1.txt", et on construit le tableau "TAB" # en ne prennant que le champ qui nous interesse declare -a TAB index=0 while IFS=";" read -r param value libelle do # pour chaque ligne on a les champs $param $value et $libelle, # séparés par ";" TAB[index]="$value" let "index+= 1" done < $fichier1 echo "total des ligne du tableau : ${#TAB[@]}" # boucle sur le fichier "fic2.txt", cette fois on sépare avec les espaces while IFS=" " read -r idligne param1 param2 param3 do # pour chaque ligne on a les champs $idligne, $param1, etc.. # et on parcourt le tableau précédemment créé index=0 total=${#TAB[@]} while [ $index -lt $total ] do value=${TAB[index]} let "index = $index + 1" champ1=`echo $value | cut -d"-" -f1` champ2=`echo $value | cut -d"-" -f2` champ3=`echo $value | cut -d"-" -f3` # dans champ1,champ2 et champ3 on a les 3 champs du tableau # maintenant il faut comparer, etc.. echo "tableau = $champ1 / $champ2 / $champ3 ($value)" done done < $fichier2
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oui j'ai une bonne raison.... :(
Enfin pour répondre à vos questions :
- je dois effectivement utiliser le awk mais comme le reste je n'y connais rien.
- le 2eme paramètre trouvé est bien VAL6. En fait il faut partir du debut de la ligne, compter 8 caractères.
pour : 15 VAL5 VAL6 VAL7 on arrive au début de VAL6.
Je vais essayer de voir avec vos codes si je m'en sors !
En tout cas merci beaucoup pour voitre aide.
Si vous avez d'autres idées, allez y, je suis preneuse !
Enfin pour répondre à vos questions :
- je dois effectivement utiliser le awk mais comme le reste je n'y connais rien.
- le 2eme paramètre trouvé est bien VAL6. En fait il faut partir du debut de la ligne, compter 8 caractères.
pour : 15 VAL5 VAL6 VAL7 on arrive au début de VAL6.
Je vais essayer de voir avec vos codes si je m'en sors !
En tout cas merci beaucoup pour voitre aide.
Si vous avez d'autres idées, allez y, je suis preneuse !