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

Linux Discussion :

Script ajout délimiteurs


Sujet :

Linux

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Par défaut Script ajout délimiteurs
    Bonjour tout le monde,

    Je dois écrire un script en Unix qui prend en paramètre un fichier plat et ajoute des séparateurs (';') à des positions bien spécifiques dans chaque ligne. (c'est pour le charger dans la base de données dans Postgres).

    Exemple:
    1152151 Tata Toto 200696585
    4544446 Mimmm Aloooo699669669
    donneront:
    1152151 ;Tata ;Toto ;200696585
    4544446 ;Mimmm ;Aloooo;699669669

    Si quelqu'un a une idée ou a déja fait pareil, merci d'avance.

  2. #2
    Membre expérimenté
    Inscrit en
    Octobre 2005
    Messages
    344
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 344
    Par défaut
    Si tu veux un script tout bête, le voici:

    while read champs1 champs2 champs3 champs4
    do
    echo "$champs1 ; champs2 ; champs3 ; champs4" >> fichier_final.txt
    done < fichier_original.txt
    Sinon en une ligne:

    cat fichier_original.txt | tr " " " ; " > fichier_final.txt

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 22
    Par défaut Un script vite fait donc pas top suivant ce qu'on veut
    Voila un script perl qui fais ce que tu demande.
    chmod +x script.pl
    ./script.pl fichiersource.txt


    #!/usr/bin/perl
    if ($ARGV[0])
    {open(FILEDESC,$ARGV[0]) or die "No such file\n";}
    else {die "Enter a argument : $0 toto.txt";}

    open(OUTFILE,">result.txt")or die "Impossible de creer le fichier ...\n";
    my $i;

    while (<FILEDESC>)
    {
    my $str;
    @champ = split(/\s+/,$_);
    #join(';',@champ);
    for($i=0;$i<=$#champ;$i++)
    {
    if ($i != $#champ) {$str = $str.$champ[$i].";";}
    else {$str = $str.$champ[$i];}
    }
    print OUTFILE "$str";
    print OUTFILE "\n";
    }

    print "Voir le fichier \"result.txt\" pour les resultats\n";

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 22
    Par défaut
    Apres faut voir si le fichier a traiter fais 8ko ou 30 Mo.
    8ko : cat ... ok

    30ko : vaut mieux traiter le fichier ligne par ligne plutot que cat fichier....

    A+

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Par défaut
    Merci pour vos réponses, mais il faut que je spécifie les index pour chaque champs,
    Exemple:

    id = $(line:0:5)
    nom = $(line:6:10)
    ....
    Dans vos scripts il n'y a pas la possibilité d'indiquer les index.

    Merci.

Discussions similaires

  1. script ajout caractere
    Par hungtuan dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 25/07/2011, 18h22
  2. Script ajouter nom du fichier
    Par Rone22170 dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 04/06/2011, 18h00
  3. Réponses: 0
    Dernier message: 21/04/2010, 23h54
  4. [Exchange 2003] Script Ajout boite Exchange2k3 à un contact
    Par furth dans le forum Exchange Server
    Réponses: 0
    Dernier message: 14/05/2009, 15h07
  5. [PowerShell] [PowerShell]Script ajout alias
    Par Léponge85 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 26/02/2009, 11h45

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