traiter chaque ligne d'un fichier

traiter chaque ligne d'un fichier - Shell/Batch - Programmation

Marsh Posté le 16-04-2004 à 11:01:37    

Salut à tous.
 
Je dois faire un script sous shell qui traite un fichier mais le problème c'est que je dois d'abord vérifier que chaque ligne contient une chaine de caracteres bien precises avant de faire ce traitement.
 
Je connais toutes les commandes qui me permettent de faire ce que je recherche mais je ne sais pas comment dire a mon script de traiter chaque ligne de mon fichier...  :??:  
 
en gros voila mon mini script mais il me manque juste a savoir comment faire ca pour chacune des lignes (en bleu):
 
echo "voila mon nouveau fichier" > NOUVEAU_FICHIER
SELECTION DE LA LIGNE 1
case $(echo MA_LIGNE | awk '{print $2}') in
# Si le 2eme champs de ma ligne n'est pas "1" alors ma variable OK=1
 "1" ) OK=0;;
 *) OK=1;;
esac
if (OK=1)
 then echo MA_LIGNE >> NOUVEAU_FICHIER
fi
SELECTION DE LA LIGNE N + 1
 
help :cry:

Reply

Marsh Posté le 16-04-2004 à 11:01:37   

Reply

Marsh Posté le 16-04-2004 à 14:45:40    

Bah alors? y'a pas un seul mec bon ici?

Reply

Marsh Posté le 17-04-2004 à 02:39:43    

Ben pourquoi tu fais pas du awk, si tu connais toutes les commandes ?

Reply

Marsh Posté le 17-04-2004 à 19:18:56    

Voici ton script complet :
 

Code :
  1. echo "voila mon nouveau fichier" > NOUVEAU_FICHIER
  2. while read MA_LIGNE
  3. do
  4.   case $(echo MA_LIGNE | awk '{print $2}') in
  5.     # Si le 2eme champs de ma ligne n'est pas "1" alors ma variable OK=1
  6.     "1" ) OK=0;;
  7.       *) OK=1;;
  8.   esac
  9.   if (OK=1)
  10.   then echo MA_LIGNE >> NOUVEAU_FICHIER
  11.   fi
  12. done < ANCIEN_FICHIER


 
La version simplifiée :
 

Code :
  1. echo "voila mon nouveau fichier" > NOUVEAU_FICHIER
  2. while read MA_LIGNE
  3. do
  4.   if [ "$(echo MA_LIGNE | awk '{print $2}')" = "1" ]
  5.   then echo MA_LIGNE >> NOUVEAU_FICHIER
  6.   fi
  7. done < ANCIEN_FICHIER


 
Ou encore sans awk :
 

Code :
  1. echo "voila mon nouveau fichier" > NOUVEAU_FICHIER
  2. while read MA_LIGNE
  3. do
  4.   set -- $MA_LIGNE
  5.   if [ "$2" = "1" ]
  6.   then echo MA_LIGNE >> NOUVEAU_FICHIER
  7.   fi
  8. done < ANCIEN_FICHIER


 
 
Et la version awk :
 

Code :
  1. echo "voila mon nouveau fichier" > NOUVEAU_FICHIER
  2. awk '$2=="1"' ANCIEN_FICHIER >> NOUVEAU_FICHIER


---------------
Jean Pierre.
Reply

Sujets relatifs:

Leave a Replay

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