Forum Programmation.shell eclater un fichier en +eur fichier selon un type de données

Posté par  .
Étiquettes : aucune
0
3
fév.
2007
Bonjour à tous

je débute dans shell et je dois faire un script qui répond au besoin suivant :

dans un même toto.txt j'ai des données provenant de different systèmes. je dois séparer ces données.

exemple : toto.txt contient les données des professeurs et des etudiants
je dois séparer les données des professeurs dans un fichier professeur.txt et etudiants dans un fichier etudiant s.txt

dans le fichier toto les données des professeurs sont identifier par une colonne PROF et le etudiants par une colonne ETUD

les données (corresondent à des collonnes dans une table )en sortie dansles fichiers professeur.txt, etudiants.txt doivent être délimiter par un séparateur ';'

merci pour votre aide
  • # Le plus simple

    Posté par  . Évalué à 2.

    Compte tenu de ce que je comprends du problème, le plus simple est l'utilisation de grep:
    grep -w PROF toto.txt > professeur.txt
    et
    grep -w ETUD toto.txt > etudiants.txt
    • [^] # Re: Le plus simple

      Posté par  . Évalué à 1.

      merci pour votre réponse

      En effet c'est ce que j'ai fais mais le pb c'est que dans le fichier professeur il faut que les colonnes soient séparées par un séparateur ';' dans le fichier initial il n'ya pas de séparateur

      j'ai la taille des enregistrements comment faire pour identifier les colonnes
      • [^] # Re: Le plus simple

        Posté par  . Évalué à 1.

        Avec un exemple concret, ca serait plus parlant :)

        S'il n'y a vraiment aucun séparateur initialement mais des tailles fixes, le mieux est sûrement d'utiliser 'cut'.
        • [^] # Re: Le plus simple

          Posté par  . Évalué à 1.

          Dans le fichier employes on a :

          001PROMORELSTEPHANIE
          002PROBRETONCYRIL
          003ETUTHAISPIERRE
          004PRODELACOURNICOLAS
          005ETUMOULLARTNINA
          ...
          dans un fichier descriptif on a des infos sur la taille des enregistrements

          1à 4 Code
          5 à 7 Statut
          8 à 17 Nom
          18 à 28 Prenom


          le fichier professeur doit être :

          001;PRO;MOREL;STEPHANIE
          002;PRO;BRETON;CYRIL
          004;PRO;DELACOUR;NICOLAS

          celui des etudiants :

          003;ETU;THAIS;PIERRE
          005;ETU;MOULLART;NINA

          Merci
          • [^] # Re: Le plus simple

            Posté par  . Évalué à 1.

            Je ne comprends pas très bien car l'exemple fourni n'est pas dans le bon format:
            par exemple
            001PROMORELSTEPHANIE
            donne
            Code=001P (1 à 4)
            Statut=ROM (5 à 7)
            Nom=ORELSTEPHA (8 à 17)
            Prenom=NIE (18 à la fin)

            À part ca, comme dit plus haut, il est possible d'utiliser la commande cut :
            cut -c 8-17
            donnera par exemple le nom.

            Pour la sortie il suffit d'écrire quelque chose du genre:
            echo $code\;$statut \;$nom\;$prenom


Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.