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

Unix Discussion :

Comment écarter certaines lignes d'un fichier ?


Sujet :

Unix

  1. #1
    Membre du Club
    Homme Profil pro
    Cobol sur Mainframe et Unix AIX
    Inscrit en
    Mars 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cobol sur Mainframe et Unix AIX

    Informations forums :
    Inscription : Mars 2012
    Messages : 196
    Points : 69
    Points
    69
    Par défaut Comment écarter certaines lignes d'un fichier ?
    Bonjour,

    J'ai un fichier qui contient ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    D0000230307                3002285V 01NJEUR20230307                                                                 0129091 RCF -1250 -250 EUR CNV FINANCIERE DU 11/2022 (EXT)       EURPEURP                         1                                                               000000
    D0000230307                3002287H 01DMEUR20230307                                                                 0181361 RCE -2330.83 -466.166 EUR CNV EXPLORE DU 11/2022 (EXT)   EURfEURf                         1                                                               000000
    D1111230307                3002289W 01LLEUR20230307                                                                 0191591 RCR -1035.63 -207.126 EUR CNV DISCOVER DU 11/2022 (EXT)  EUR EUR                          1                                                               000000
    D1111230307                3002285V 01NJEUR20230307                                                                 0129091 RCF -1250 -250 EUR CNV FINANCIERE DU 11/2022 (EXT)       EURPEURP                         1                                                               000000
    D3220230307                3002287H 01DMEUR20230307                                                                 0181361 RCE -2330.83 -466.166 EUR CNV EXPLORE DU 11/2022 (EXT)   EURfEURf                         1                                                               000000
    D3220230307                3002289W 01LLEUR20230307                                                                 0191591 RCR -1035.63 -207.126 EUR CNV DISCOVER DU 11/2022 (EXT)  EUR EUR                          1                                                               000000
    D3220230307                3002287H 01LCEUR20230307                                                                 0191521 RCE -1250 -250 EUR CNV EXPLORE DU 11/2022 (EXT)          EURPEURPD3220230307              
    D3220230307                3002287H 01DMEUR20230307                                                                 0181361 RCE -2330.83 -466.166 EUR CNV EXPLORE DU 11/2022 (EXT)   EURfEURf                         1                                                               000000
    D3220230307                3002289W 01LLEUR20230307                                                                 0191591 RCR -1035.63 -207.126 EUR CNV DISCOVER DU 11/2022 (EXT)  EUR EUR                          1                                                               000000
    D3220230307                3002287H 01LCEUR20230307                                                                 0191521 RCE -1250 -250 EUR CNV EXPLORE DU 11/2022 (EXT)          EURPEURPD3220230307
    je voudrais copier dans un autre fichier mais en écartant la chaine de caractères D3220230307

    Merci pour votre aide.

    Eddy

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 201
    Points : 12 778
    Points
    12 778
    Par défaut
    Bonjour,
    Tu peux utiliser la commande grep en combinaison avec cat pour filtrer les lignes du fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cat monFichier | grep -v D3220230307 > fichierCible
    Tatayo.

  3. #3
    Membre du Club
    Homme Profil pro
    Cobol sur Mainframe et Unix AIX
    Inscrit en
    Mars 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cobol sur Mainframe et Unix AIX

    Informations forums :
    Inscription : Mars 2012
    Messages : 196
    Points : 69
    Points
    69
    Par défaut
    J'ai bien testé cette solution, mais je n'ai pas toute la ligne dans le fichier en sortie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    D1820230307
    D1820230307
    D1820230307
    D1820230307
    D1820230307
    D1820230307
    E32

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 249
    Points : 13 472
    Points
    13 472
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -v '^D3220230307' monfichier.txt > masortie.txt
    Le comportement que tu décris est impossible. Ton fichier d'entrée contient-il des caractères spéciaux ? Pour le savoir, que donne la commande suivante ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    head -n 2 monfichier.txt | od -c
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #5
    Membre du Club
    Homme Profil pro
    Cobol sur Mainframe et Unix AIX
    Inscrit en
    Mars 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cobol sur Mainframe et Unix AIX

    Informations forums :
    Inscription : Mars 2012
    Messages : 196
    Points : 69
    Points
    69
    Par défaut
    Oui, il y a des caractères spéciaux
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    0000000    E   1   8  \0  \0  \0  \0  \0  \f   W   V   H   0   4
    0000020
    0000040        W
    0000060        0   0   0   0   0   0   0   0
    0000100
    *
    0000260                                                           \0  \0
    0000300   \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \f
    0000320               \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
    0000340   \0  \0  \0  \0  \f              \0  \0  \0  \0  \0  \0  \0  \0
    0000360   \0  \0  \0  \0  \0  \0  \0  \0  \0  \f
    0000400
    *
    0000520                0   0   0   0   0   0
    0000540                                       \0  \0  \0  \0  \0  \0  \0
    0000560   \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \f              \0  \0
    0000600   \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \f
    0000620   \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
    0000640   \0  \f  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
    0000660   \0  \0  \0  \f          \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
    0000700   \0  \0  \0  \0  \0  \0  \0  \f  \0  \0  \0  \0  \0  \0  \0  \0
    0000720   \0  \0  \0  \0  \0  \0  \0  \0  \0  \f  \n   D   1   8   2   0
    0000740    2   3   0   3   0   7  \0  \0  \0  \0  \0 034   7   8   1   7
    0000760    3   6   1   P       0   0   0   1   C   H   F   2   7   7   7
    0001000    7   7   1   Y       0   0   0   0   C   H   F   2   0   2   3
    0001020    0   3   0   7   A   J   U   S   T   E   M   E   N   T       S
    0001040    E   L   O   N       C   A   S   H   P   O   S
    0001060
    *
    0001120                        A   J   U   S   T   E   M   E   N   T
    0001140    S   E   L   O   N       C   A   S   H   P   O   S
    0001160
    *
    0001220                            C   H   F  \0  \0  \0  \0  \0  \0  \0
    0001240   \0  \0 001  \0 022   5   8  \0  \f              \0  \0  \0  \0
    0001260   \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \f
    0001300       \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
    0001320   \0  \0  \f
    0001340                                                    1
    0001360                                                    0   1   0   0
    0001400    C   O   N   C
    0001420
    0001440                                                    0   0   0   0
    0001460    0   0
    0001500           \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
    0001520   \0  \0  \0  \f              \0  \0  \0  \0  \0  \0  \0  \0  \0
    0001540   \0  \0  \0  \0  \0  \0  \0  \0  \f  \0  \0  \0  \0  \0  \0  \0
    0001560   \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \f  \0  \0  \0  \0  \0
    0001600   \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \f          \0
    0001620   \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
    0001640   \f  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
    0001660   \0  \0  \f  \n
    0001664

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 249
    Points : 13 472
    Points
    13 472
    Par défaut
    Wow. Mais d'où vient ce fichier tout pourri ? Non seulement il y a des caractères spéciaux, mais en plus, ils ne sont pas courants. \f par exemple, c'est la fin de page, pour une imprimante. \0, c'est la fin de chaîne de caractères. \034 est un séparateur de champ, mais il n'y en a qu'un sur une seule ligne.

    Il faudrait vérifier si c'est ton fichier de sortie, ou l'affichage de ton fichier de sortie qui bugue.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -v '^D3220230307' monfichier.txt | head -n 2 | od -c
    L'exemple que tu donnes ici ne correspond pas à l'exemple que tu donnes plus haut.

    Dans l'idéal, il faut demander au fournisseur de donner un fichier propre, ou de le nettoyer, avant de le travailler.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  7. #7
    Membre du Club
    Homme Profil pro
    Cobol sur Mainframe et Unix AIX
    Inscrit en
    Mars 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cobol sur Mainframe et Unix AIX

    Informations forums :
    Inscription : Mars 2012
    Messages : 196
    Points : 69
    Points
    69
    Par défaut
    c'est un fichier issu d'un environnement Unix généré par du Cobol Microfocus.

  8. #8
    Expert éminent sénior
    Avatar de Escapetiger
    Homme Profil pro
    Administrateur système Unix - Linux
    Inscrit en
    Juillet 2012
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur système Unix - Linux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 1 480
    Points : 11 088
    Points
    11 088
    Par défaut
    Non testé, voir ci-après :
    README.rst

    This is a script to access data in a Microfocus COBOL database and export it. It runs on Python 3 and requires the argparse library (needs to be installed on Python < 3.2).

    I'm not at all familiar with COBOL, and built this based on information I was able to gather on the web, and looking at hex dumps. It's not a proper library to work with these files, but a cludge to get the data out. It works for the files I need to process, and might need furter improvements for yours.

    COBOL seems to have dealing with these types of databases built into the language itself. Unfortuately, the files itself do not contain a schema; the schema is written in COBOL code, in copybooks or FDD files.

    As a result, to actually export the data, we need to define the fields that it contains. Lacking the original source code or definition files, this needs to be reverse-engeneered. This exporter uses an ad-hoc format to define the fields, rather than actual COBOL .FDD files.
    (.../...)
    Source : GitHub - miracle2k/mfcobol-export: Exporter for Microfocus COBOL databases.
    « Developpez.com est un groupe international de bénévoles dont la motivation est l'entraide au sens large » (incl. forums developpez.net)
    Club des professionnels en informatique

Discussions similaires

  1. [PowerShell] Comment récupérer certaines lignes d'un fichier pour ensuite s'en servir
    Par Zipper963 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 13/12/2012, 15h35
  2. Comment ignorer certaines lignes d'un fichier
    Par Popeye63 dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/11/2012, 15h54
  3. Comment mettre certaines lignes gras dans un fichier EXCEL
    Par ludo35 dans le forum ODS et reporting
    Réponses: 8
    Dernier message: 05/05/2011, 14h49
  4. comment copier une ligne d'un fichier à un autre
    Par debutant-1 dans le forum C
    Réponses: 14
    Dernier message: 26/06/2006, 21h01
  5. Supprimer certaines lignes d'un fichier texte
    Par kek_net dans le forum Langage
    Réponses: 2
    Dernier message: 10/04/2006, 11h21

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