Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1322 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Problème dans la rédaction d'un petit script

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème dans la rédaction d'un petit script

n°1928632
tanaka-san
Posté le 02-10-2009 à 21:27:53  profilanswer
 

Bonjour,  
 
Autant le dire tout de suite je suis assez débutant.
 
J'ai un petit problème avec un petit script que j'essaye de faire tourner. En gros j'ai un fichier texte que j'ai séparer en trois partie et j'aimerais que le script fasse:
 
Partie 1
ajout d'une ligne
Partie 2
ajout d'une ligne
Partie 3
 
J'ai un fichier 1Valuea0 qui contient des données (sur une ligne) et j'aimerais qu'il prennent à chaque fois la donnée de la 46 colonnes puis la 48ième colonnes etc.. et la mette dans un fichier temp avec juste la valeur de la 46 (ou 48 etc) colonnes.
 
Or mon problème est que le fichier temp donne une copie de TOUT ce qu'il y a dans 1Valuea0. Ce que je ne veux pas.  
 
Comment faire?
 

Code :
  1. #!/bin/bash
  2. #
  3. #
  4. for X in 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100; do
  5. cp template1 input1
  6. awk < 1Valuea0 '{ print $X }' > temp
  7. echo -n "calc a0 " >> input1
  8. cat temp >> input1
  9. cat template2 >> input1
  10. echo "alloy "$X >> input1
  11. cat template3 >> input1
  12. ../dmk.x < input1 > output
  13. cp output output.$X
  14. cp input1 input1.$X
  15. done


 
 
D'avance merci.
 
 

mood
Publicité
Posté le 02-10-2009 à 21:27:53  profilanswer
 

n°1928714
tanaka-san
Posté le 03-10-2009 à 22:15:42  profilanswer
 

Après plusieurs essai-erreur j'ai remarqué que la ligne  
awk < 1Valuea0 '{ print $X }' > temp
 
marchait uniquement dans le shell mais pas dans mon script.  
Comment la faire marcher dans le bash?

n°1928717
pataluc
Posté le 03-10-2009 à 22:23:53  profilanswer
 

pourquoi ne pas plutot faire ton for dans ton awk?
je pense que ca simplifie ton pb et optimise ton script...

n°1928719
tanaka-san
Posté le 03-10-2009 à 23:08:38  profilanswer
 

Hum je vois pas trop comment faire pour mettre le for dans le awk?
 
De toute facon je crois que j'ai fini par trouver la solution:
 

Code :
  1. !/bin/bash
  2. #!/bin/awk -f
  3. #
  4. #
  5. #
  6. for X in 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100; do
  7. cp template1 input1
  8. awk < 1Valuea0 '{ print $'$X' }' > temp
  9. echo -n "calc a0 " >> input1
  10. cat temp >> input1
  11. cat template2 >> input1
  12. echo "alloy "$X >> input1
  13. cat template3 >> input1
  14. ../dmk.x < input1 > output
  15. cp output output.$X
  16. cp input1 input1.$X
  17. done


 
En fait awk prend pas directement une variable visibement...
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Problème dans la rédaction d'un petit script

 

Sujets relatifs
Problème d' espace dans le résultat de la dateprobleme installation de forum sur free
Probleme de Div et evenement (js)Probleme fopen
Problème dans ma boucleProblème grosse requête PHP !
Connecter à la base WMI en tant que, ou "élever" le script en tant que[PHP] Problème de validation de schéma XSD
Problème requête select avec double résultatsProblème de session avec un objet Soap
Plus de sujets relatifs à : Problème dans la rédaction d'un petit script


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR