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

Problème dans la rédaction d'un petit script - Shell/Batch - Programmation

Marsh Posté le 02-10-2009 à 21:27:53    

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.
 
 

Reply

Marsh Posté le 02-10-2009 à 21:27:53   

Reply

Marsh Posté le 03-10-2009 à 22:15:42    

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?

Reply

Marsh Posté le 03-10-2009 à 22:23:53    

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

Reply

Marsh Posté le 03-10-2009 à 23:08:38    

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...
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed