Bash:Traitement des colonnes d'un fichier
Résolu/Fermé
poiuytreza01234567890
Messages postés
54
Date d'inscription
jeudi 17 janvier 2013
Statut
Membre
Dernière intervention
4 avril 2013
-
Modifié par poiuytreza01234567890 le 17/01/2013 à 21:54
Utilisateur anonyme - 18 janv. 2013 à 08:30
Utilisateur anonyme - 18 janv. 2013 à 08:30
A voir également:
- Bash:Traitement des colonnes d'un fichier
- Bingo bash free - Télécharger - Divers Jeux
- Retour à la ligne bash ✓ - Forum Shell
- Bash addition ✓ - Forum Shell
- Bash écrire dans un fichier - Forum Shell
- [Bash]Impossible de faire une simple addition - Forum Shell
7 réponses
Utilisateur anonyme
17 janv. 2013 à 22:38
17 janv. 2013 à 22:38
salut,
en shell, la substitution de commandes s'effectue entre $( et )
=>
il y a des tutos sur l'écriture de scripts shell !
en shell, la substitution de commandes s'effectue entre $( et )
=>
var=$(commande)
il y a des tutos sur l'écriture de scripts shell !
poiuytreza01234567890
Messages postés
54
Date d'inscription
jeudi 17 janvier 2013
Statut
Membre
Dernière intervention
4 avril 2013
Modifié par poiuytreza01234567890 le 17/01/2013 à 22:51
Modifié par poiuytreza01234567890 le 17/01/2013 à 22:51
Effectiment il faut rajouter $() Merci!
mais, j'ai toujours le problème pour la deuxième partie
pour stocker que les lignes respectant la condition dans un autre fichier
dirFichierInitiale=/home/Sukrat/Test/test.txt;
dirRes=/home/Sukrat/Test/NewTab.txt;
MinDistMax=$(cut -d" " -f3 $dirFichierInitiale | sort -n | sed '1,${1b;d}')
NewTabl=$(awk '$2 > $MinDistMax {print $1 " " $2 " " $3}')
echo $NewTabl > $dirRes
et même quand je mets echo $NewTabl pour voir ce qui se passe ça tourne sans rien m'afficher jusqu'à que je tape Ctrl C pour l'arrêter.
mais, j'ai toujours le problème pour la deuxième partie
pour stocker que les lignes respectant la condition dans un autre fichier
dirFichierInitiale=/home/Sukrat/Test/test.txt;
dirRes=/home/Sukrat/Test/NewTab.txt;
MinDistMax=$(cut -d" " -f3 $dirFichierInitiale | sort -n | sed '1,${1b;d}')
NewTabl=$(awk '$2 > $MinDistMax {print $1 " " $2 " " $3}')
echo $NewTabl > $dirRes
et même quand je mets echo $NewTabl pour voir ce qui se passe ça tourne sans rien m'afficher jusqu'à que je tape Ctrl C pour l'arrêter.
Utilisateur anonyme
17 janv. 2013 à 23:04
17 janv. 2013 à 23:04
awk n'a pas de fichier à traiter. Il ne tourne pas, il attend.
poiuytreza01234567890
Messages postés
54
Date d'inscription
jeudi 17 janvier 2013
Statut
Membre
Dernière intervention
4 avril 2013
17 janv. 2013 à 23:12
17 janv. 2013 à 23:12
en mettant comme ça:
NewTabl=$(awk '$2 > $MinDistMax {print $1 " " $2 " " $3}' $dirFichierInitiale)
echo $NewTabl
le script m'imprime une ligne vide
NewTabl=$(awk '$2 > $MinDistMax {print $1 " " $2 " " $3}' $dirFichierInitiale)
echo $NewTabl
le script m'imprime une ligne vide
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
17 janv. 2013 à 23:46
17 janv. 2013 à 23:46
parce que $MinDistMax est une variable du shell, qui ne sera pas développée entre apostrophes.
passe la en argument à awk
passe la en argument à awk
awk -v minmax="$MinDistMax" '$2 > minmax ...
poiuytreza01234567890
Messages postés
54
Date d'inscription
jeudi 17 janvier 2013
Statut
Membre
Dernière intervention
4 avril 2013
Modifié par poiuytreza01234567890 le 18/01/2013 à 00:27
Modifié par poiuytreza01234567890 le 18/01/2013 à 00:27
Merci bcp pour votre aide !
Utilisateur anonyme
18 janv. 2013 à 08:30
18 janv. 2013 à 08:30
avec fichier tel que
P1 8 12 P2 11 14 P3 9 11 P4 10 10 P5 8 10 P6 10 15 P7 14 12 P8 6 20 P9 4 24 P10 25 10une solution, avec GNU awk
gawk '{a[++n]=$0; if($3>x)x=$3}END{m=length(a); for(i=1;i<=m;i++){split(a[i],a2,FS); if(a2[2]<=x){print a[i]}}}' fichier P1 8 12 P2 11 14 P3 9 11 P4 10 10 P5 8 10 P6 10 15 P7 14 12 P8 6 20 P9 4 24