IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Modification d'un fichier txt


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 282
    Par défaut Modification d'un fichier txt
    Bonjour,

    Je possède un fichier txt avec différentes lignes commençant par differentes lettres. Les chiffres sont les numéros de ligne.

    Par exemple

    1 A01...
    2 B08...
    3 C
    4 M
    5 A
    6 C
    7 A
    8 B
    9 M
    10A
    11B
    12A
    13B
    14A
    15B

    Je veux faire ressortir à partir de la ligne 10 (En gros toutes les lignes commencant par A suivi de B de A puis de B), toutes les lignes ayant comme critères soit 00 en position 47.

    Je ne sais pas si je me suis bien expliquer. Je suis débutant.

    J'ai quelqu'un à mon travail qui n'est plus là m'avait donné cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #!/bin/bash
    IFS=
    #src_file=test.txt
    src_file=rsf.bakWriter.txt
     
    fichier_ligneA=ligneA.txt
     
    #cat $src_file | grep -n "^A.*" | cut -d: -f1 > $fichier_ligneA
     
    while read ligneA
    do
    	ligneBpotentielle=$(($ligneA+1))
    	ligneB_test=$(sed "$ligneBpotentielle!d" $src_file | egrep "^B.*")
    	if [ ! -z $(echo $ligneB_test) ]; then
    		echo $ligneBpotentielle
    	fi
    done < $fichier_ligneA
    Est ce que vous pouvez m'aider?
    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Difficile de comprendre ce que tu souhaites obtenir.

    En entrée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    A01...
    B08...
    C
    M
    A
    C
    A
    B
    M
    A
    B
    A
    B
    A
    B
    En sortie:
    Que faire de la partie allant de la ligne 12 à 15? Il s'agit aussi de A, B, A, B
    Que contiennent-elle après le A et le B, que des chiffres?

    Un exemple serait utile pour comprendre cette partie:
    toutes les lignes ayant comme critères soit 00 en position 47

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 73
    Par défaut
    Est-ce que tu pourrais reformuler ta demande, il est vrai que l'on est un peu perdu dans tes explications.

    toutes les lignes ayant comme critères soit 00 en position 47. ???

    Est-ce que tu aurais un exemple de rendu à nous donner ?

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 865
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 865
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Comme ecatomb, j'ai du mal à saisir...
    Pourquoi par exemple "à partir de la ligne 10" ? Est-ce que cette valeur 10 est donnée comme critère absolu ou bien est-ce que c'est parce que la ligne 10 est la première qui correspond à un motif particulier ?

    En ce qui concerne la recherche des lignes ayant "00" en position 47, ça c'est facile
    grep "^.\{46\}00" fichier...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 282
    Par défaut
    Bonsoir,

    je reviens vers vous avec un peu de retard.

    Voici quelques explications.

    Nous devons fournir un fichier txt définie par un organisme qui est l'ATIH. C'est le résumé des passages aux urgences.
    Il se décompose par plusieurs lignes commençant par des lettres. En premier c'est toujours une ligne commençant par la lettre A suivi d'une ligne soit par une lettre C ou M et B.

    A la fin du fichier, les lignes corresponds au payant. Elles sont toutes sous la forme de deux lignes. La première commençant par un A suivi d'un B puis A et B pour un autre dossier. Voir fichier joint.

    Le problème c'est qu'il augmente de mois en mois. Je cherche à connaître dans le fichier la première ligne commencant par un A suivi d'un B puis A suivi d'un B et ainsi de suite, c'est toujours à la fin du fichier. Puis à rajouté deux chiffres par exemple 00 à la fin des lignes commençant par A.

    Je ne sais pas si j'ai été clair.

    Merci d'avance
    Fichiers attachés Fichiers attachés

  6. #6
    Invité
    Invité(e)
    Par défaut
    C'est un peu plus clair, mais pas encore tout à fait.

    Peux-tu me dire si j'ai bien compris:
    A partir d'un moment, le fichier ne contient que des séries de 2 lignes (la 1ère commençant par A, la 2ème par B) sans aucune ligne commençant par autre chose entre ces séries.
    Tu cherches à connaitre cette ligne et à la modifier ainsi que les suivantes.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 282
    Par défaut
    Oui, c'est cela.

  8. #8
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 378
    Par défaut
    Bonjour,

    Si j'ai bien compris, voici un exemple en sed, qui rajoute TOTO à la fin des lignes commençant par A qui sont suivi par une ligne commençant par B:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ sed -e '/^A/{N;/\nB/s/\n/TOTO\n/;}' docu.txt
    A76000000011145016000102767000090715083U11001 010101190012607200926072009340000000252800002528000057000000399000001710000000000000000000002528
    C76000000016811800010270900009071508307000 0126072009C   N0010001000100022000000570007000003990000057000000000
    B76000000016811800010270900009071508307000 0126072009ATU  0010001000100025280000252810000002528000025280000000
    A76000000011145016000102706000000001444 110003000101190012203200922032009650000000000000000000000025280000252800000000000000000000000000000000TOTO
    B76000000018607762170840600000000144407000 0122032009ATU  0010001000100025280000252810000002528000025280000000
    A76000000022145016000102707000000059808 110003000101190012801200928012009650000000000000000000000025280000252800000000000000000000000000000000TOTO
    B76000000027401103871170700000005980807000 0128012009ATU  0010001000100025280000252810000002528000025280000000
    A76000000022145016000102707000000059808 110003000101190012901200929012009650000000000000000000000025280000252800000000000000000000000000000000TOTO
    B76000000027401103871170700000005980807000 0129012009ATU  0010001000100025280000252810000002528000025280000000

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème modification d'un fichier txt
    Par YoshioToutou dans le forum C
    Réponses: 6
    Dernier message: 21/03/2011, 00h10
  2. modification d'un fichier .txt
    Par juliejuliejulie dans le forum MATLAB
    Réponses: 6
    Dernier message: 23/03/2010, 10h43
  3. [Batch] Modification d'un fichier txt par glisser/déposer
    Par L.rod dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 18/09/2009, 14h41
  4. Ouverture et modification d'un fichier .txt
    Par Marty McFly dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 22/05/2006, 10h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo