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 Unix


Sujet :

Linux

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Par défaut Script Unix
    Bonjour,

    Je dois faire un script unix qui permet de lire n fichier et de concatener les ligne entrantes dans un autre fichier en sortie sans faire de doublons.

    Est ce que qq1 saurait comment concatener sans faire de doublons ?

    Car mon probleme est que je ne vois pas comment eviter les doublons

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Par défaut
    A moins de coder l'outil qui va te permettre de le faire, je ne vois pas comment eviter les doublons lors de la concatenation. Par contre rien ne t'empeche de developper un pti script python ou perl qui supprime les doublons après la concatenation.

  3. #3
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    Je pense qu'effectivement, il va être difficile de tout faire en une seule passe. Donc je te conseillerait d'abord de concaténer les fichiers, puis ensuite de supprimer les doublons.

    Pour concaténer les fichiers, tu peux utiliser simplement la commande find, avec un truc du genre (concaténation de tous les fichiers *.txt du répertoire courant, et de tous les sous-répertoires dan un fichier sortie.log ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    touch sortie.log
    find . -type f -name "*.txt" -exec cat \{} \; >> sortie.log
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Par défaut
    Voici une solution purement shell mais qui t'oblige à trier ton fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    cat file1 file2 file3 file4 > /tmp/filetmp
    sort /tmp/filetmp | uniq > fileout
    rm /tmp/filetmp

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Par défaut
    elle a l'air pas mal cette solution
    si ca marche tu me sauve la vie

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Par défaut
    j'ai juste une question pourquoi est il necessaire de trier avant d'utiliser uniq

  7. #7
    vic
    vic est déconnecté
    Membre chevronné

    Profil pro
    Inscrit en
    Août 2002
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 431
    Par défaut
    uniq ne supprime que les lignes identiques qui se suivent, il faut donc trier si tu veux supprimer les doublons.

    Version plus courte de la solution proposée par getupa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat fichier* | sort -u > résultat.txt

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Par défaut
    j'ai teste la commande et elle marche plutot bien
    seulement elle enleve la ligne qui se repete
    Mais seulement si ma ligne est en 3 exemplaire alors elle enleve qu'une seule au lieu d'en elever deux

    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    sfr:/batchs/sfr/SFR_DEV/bin>cat file2.data
    toto est arrive
    toto est parti
    toto parti
    toto est arrive
    toto mange
    toto est arrive
    Resultat de la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    sfr:/batchs/sfr/SFR_DEV/bin>sort file2.data | uniq > resultat.data
    sfr:/batchs/sfr/SFR_DEV/bin>cat resultat.data
    toto est arrive
    toto est arrive
    toto est parti
    toto mange
    toto parti
    Mais il est vrai que j'ai dit doublon donc cela pretait peut etre à confusion

  9. #9
    Membre confirmé
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Par défaut Script Unix
    Bonjour,
    mais comment tu concatène les fichiers lignes avec lignes

    exemple j'ai 2 fic

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    >cat fic1
    x
    y
    z
    >cat fic2
    1
    2
    3
    4
     
    ça marche pas le cat fic1 fic2 |  sort -u> toto
     
    Merci

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Par défaut
    comprend pas ....
    man paste peut-etre !

  11. #11
    Membre confirmé
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Par défaut Script Unix
    Bonjour,
    mais comment tu concatène les fichiers lignes avec lignes

    exemple j'ai 2 fic

    Code:

    >cat fic1
    x
    y
    z
    >cat fic2
    1
    2
    3
    4

    ça marche pas le cat fic1 fic2 | sort -u> toto

    Merci

  12. #12
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Par défaut
    Toujours pas compris ..... t'as regardé la commande paste ?
    Tu veux que ton fichier de sortie resemble à quoi ???

  13. #13
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Par défaut
    Citation Envoyé par ujoodha
    j'ai teste la commande et elle marche plutot bien
    seulement elle enleve la ligne qui se repete
    Mais seulement si ma ligne est en 3 exemplaire alors elle enleve qu'une seule au lieu d'en elever deux
    Non, j'ai fait le test, je n'ai pas se problème. Il n'y aurais pas un espace deriere ou quelque chose dans le genre ?
    J'ai mis express 10 toto dans mon fichier et il ne m'en sort bien qu'un. Par contre si je met toto (avec un espace derriere), j'ai 2 toto en sortie. Un avec l'espace et l'autre sans.

  14. #14
    Membre confirmé
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Par défaut Script Unix
    Merci getupa

    paste fait le travail

Discussions similaires

  1. Script unix
    Par faty_123 dans le forum Linux
    Réponses: 5
    Dernier message: 23/07/2007, 18h01
  2. aide script unix
    Par cora1 dans le forum Linux
    Réponses: 1
    Dernier message: 28/02/2007, 18h03
  3. Exécuter script unix ds une Proc Stock
    Par super_boulet dans le forum Oracle
    Réponses: 1
    Dernier message: 22/12/2006, 11h25
  4. Avantages des scripts Perl par rapport au script UNIX ?
    Par MonsieurAk dans le forum Langage
    Réponses: 4
    Dernier message: 23/01/2006, 14h34
  5. Little Script UNIX ==> A Passer sous Windows
    Par argoet dans le forum Windows
    Réponses: 5
    Dernier message: 15/11/2004, 16h36

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