[sh] utilisation d'un script awk dans un sh
Résolu
Nebbb
-
Nebbb -
Nebbb -
Bonjour,
J'ai un script awk qui traite un fichier tsv. En l'appelant avec cette commande :
cat ../donnee/geolocalisation.tsv | ./communesVoisines.awk -vLONGITUDE=45.343432 -vLATITUDE=-12.232321 | sort | head -5
je récupère ainsi 5 lignes sous cette forme :
0.0368543 014-327
0.0383347 014-437
0.0390129 014-271
0.0391931 014-242
0.0424154 014-383
J'aimerais récupérer ce résultat dans un script shell et pouvoir différencier les 2 champs qui compose chaque ligne.
J'ai beaucoup cherché et j'en viens à me demander si c'est possible ou non...
J'ai un script awk qui traite un fichier tsv. En l'appelant avec cette commande :
cat ../donnee/geolocalisation.tsv | ./communesVoisines.awk -vLONGITUDE=45.343432 -vLATITUDE=-12.232321 | sort | head -5
je récupère ainsi 5 lignes sous cette forme :
0.0368543 014-327
0.0383347 014-437
0.0390129 014-271
0.0391931 014-242
0.0424154 014-383
J'aimerais récupérer ce résultat dans un script shell et pouvoir différencier les 2 champs qui compose chaque ligne.
J'ai beaucoup cherché et j'en viens à me demander si c'est possible ou non...
A voir également:
- [sh] utilisation d'un script awk dans un sh
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
4 réponses
Salut,
Tout dépend de comment seront exploités chacun des 2 champs par la suite...
Expliques-nous ce que tu veux en faire exactement par la suite, ce sera plus simple ;-)
Tout dépend de comment seront exploités chacun des 2 champs par la suite...
Expliques-nous ce que tu veux en faire exactement par la suite, ce sera plus simple ;-)
En fait pour chaque sortie du type 0.0368543 014-327, j'ai besoin de récupérer et de stocker le deuxième champs ( 014-327 ) pour le mettre en paramètre d'un 3eme script...
Là encore tout dépend comment doit être passé le paramètre ? Tout seul ? Groupé ?
Voilà déjà une façon de récupérer chaque deuxième champ avec une boucle :
Pour récupérer le 1er il suffit de changer "${line#* }" par "${line% *}"
;-))
Voilà déjà une façon de récupérer chaque deuxième champ avec une boucle :
$ cat fich 0.0368543 014-327 0.0383347 014-437 0.0390129 014-271 0.0391931 014-242 0.0424154 014-383 $ while read line; do echo "${line#* }";done < fich 014-327 014-437 014-271 014-242 014-383 $
Pour récupérer le 1er il suffit de changer "${line#* }" par "${line% *}"
;-))
C'est comme ça aussi que je pensais faire mais je ne peux pas faire simplement un done < fich, j'ai besoin de plusieurs pipes et de passer des paramètres dans la commande pour obtenir ceci : 0.0368543 014-327
Il faudrait que je fasse quelques chose dans ce genre là :
while read line; do echo "${line#* }";done < cat ../donnee/geolocalisation.tsv | ./communesVoisines.awk -vLONGITUDE=45.343432 -vLATITUDE=-12.232321 | sort | head -5
Mais évidemment ça ne fonctionne pas...
Sinon pour le 3eme script, je passe mon argument simplement comme ça :
echo -e $variable | ./population.awk
ici $variable est sensée être "014-327"...
J'espère que c'est plus clair, en tout cas je te remercie profondément de t'intéresser à mon problème Zipe
Il faudrait que je fasse quelques chose dans ce genre là :
while read line; do echo "${line#* }";done < cat ../donnee/geolocalisation.tsv | ./communesVoisines.awk -vLONGITUDE=45.343432 -vLATITUDE=-12.232321 | sort | head -5
Mais évidemment ça ne fonctionne pas...
Sinon pour le 3eme script, je passe mon argument simplement comme ça :
echo -e $variable | ./population.awk
ici $variable est sensée être "014-327"...
J'espère que c'est plus clair, en tout cas je te remercie profondément de t'intéresser à mon problème Zipe
Et bien je n'ai plus qu'à te tirer mon chapeau à te dire un grand merci !
Ça marche au poil !
par curiosité, qu'est ce que veux dire exactement ce "< <" ?
et j'imagine que <<< est une sorte de | inversé...
Encore merci beaucoup.
Ça marche au poil !
par curiosité, qu'est ce que veux dire exactement ce "< <" ?
et j'imagine que <<< est une sorte de | inversé...
Encore merci beaucoup.