[sh] utilisation d'un script awk dans un sh
Résolu/Fermé
A voir également:
- [sh] utilisation d'un script awk dans un sh
- Notice d'utilisation - Guide
- Script vidéo youtube - Guide
- Utilisation chromecast - Guide
- Sh pause ✓ - Forum Shell
- Microsoft activation script - Accueil - Windows
4 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
10 janv. 2011 à 19:29
10 janv. 2011 à 19:29
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...
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
10 janv. 2011 à 22:50
10 janv. 2011 à 22:50
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
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
10 janv. 2011 à 23:14
10 janv. 2011 à 23:14
Essaies comme ça :
while read line; do \ ./population.awk <<<"${line#* }" \ done < <(cat ../donnee/geolocalisation.tsv | ./communesVoisines.awk -vLONGITUDE=45.343432 -vLATITUDE=-12.232321 | sort | head -5)
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.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
10 janv. 2011 à 23:29
10 janv. 2011 à 23:29
< <(commande1 | commande2)
ou
< $(commande1 | commande2)
Sont 2 syntaxes de redirection pour passer des commandes via ce genre de boucle.
Quant à <<< "${VAR}" c'est une façon de passer une variable en entrée à une commande.
ou
< $(commande1 | commande2)
Sont 2 syntaxes de redirection pour passer des commandes via ce genre de boucle.
Quant à <<< "${VAR}" c'est une façon de passer une variable en entrée à une commande.