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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  traiter chaque ligne d'un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

traiter chaque ligne d'un fichier

n°700850
z3kill3r
Posté le 16-04-2004 à 11:01:37  profilanswer
 

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:

mood
Publicité
Posté le 16-04-2004 à 11:01:37  profilanswer
 

n°701107
z3kill3r
Posté le 16-04-2004 à 14:45:40  profilanswer
 

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

n°701537
matafan
Posté le 17-04-2004 à 02:39:43  profilanswer
 

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

n°701844
aigles
Posté le 17-04-2004 à 19:18:56  profilanswer
 

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.

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

  traiter chaque ligne d'un fichier

 

Sujets relatifs
fonction de recherche de fichier en C [LINUX]A l'aide inclusion de fichier
[VB6] Caractère de fin de ligne de fichier[JSP/Servlet/Flash] Vérification de l'existence d'un fichier
[VB] Connection HTTP pour récupérer un fichier binaireRecuperer le texte d'une page web dans un fichier texte
[php ]ecrire dans un fichierappli Java pour Palm peut-elle lire un fichier XML ?
appli Java pour Palm peut-elle lire un fichier XML ? 
Plus de sujets relatifs à : traiter chaque ligne d'un fichier


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