Partage
  • Partager sur Facebook
  • Partager sur Twitter

Commande uniq script shell

Sujet résolu
    17 novembre 2017 à 16:16:20

    bonjour

    j'ai commencer l'utlisation d'ubuntu il y'a quelques jours

    j'ai un exercice qui me demande de lire les fichiesr qui se trouve dans mon répertoire et qui ont .csv comme extension et selectionner la 3 eme colonne de chaque ligne de chaque fichier et copier le resultat dans un autre fichier jusqu' ici y'a pas de probleme

    le probleme apparait lorsque je veux eliminer les doublons dans le fichier résultat

    j'arrive a les supprimer mais si j'éxecute mon script plusieurs fois il me garde toujours le resultat de chaque execution (sans doublons iensur)

    voici mon script

    #!/bin/bash
    
    let "a = 0"
    Fichier=`ls *.csv`
    nombreFichier=`ls |grep "\.csv" |wc -l`
    if [ $nombreFichier -ge 0 ]
    then
            echo "il existe des fichiers qui ont une extension .csv"
    for i in $Fichier
    do
    echo $(basename $i)
            while read line
            do
            resultat=`cut -d ";" -f 4 $ligne >> fich.txt`
            done < $i
    done
    else
            echo "il n y a pas de fichier a traiter dans ce dossier"
    fi
    

    ps j'ai pas integrer la partie suppression des doublons dans mon code j'ai pas encore trouver comment et voila le résultat de 2 execution

     

    -
    Edité par khaleddjellal1 17 novembre 2017 à 16:17:30

    • Partager sur Facebook
    • Partager sur Twitter
      17 novembre 2017 à 17:45:07

      salut,

      avant d'appliquer uniq sur un fichier, il faut trier le fichier.

      il ne faut pas utiliser ls dans les scripts, on utilise le développement des chemins (globbing) :

      for f in ./*; do :...; done

      dans ton cas :

      for f in ./*.csv; do :...; done

      le traitement par ligne est inutile : cut traite des fichiers

      for f in ./*.csv; do cut -d ';' -f4; done >fichier.out

      le traitement individuel des fichiers est inutile : cut peut traiter plusieurs fichiers

      cut -d ';' -f 4 *.csv > fichier.out


      finalement, on récapitule :

      cut -d ';' -f4 *.csv | sort -u >fichier.out

      c'est tout ! ;)




      -
      Edité par dantonq 17 novembre 2017 à 17:46:51

      • Partager sur Facebook
      • Partager sur Twitter

      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

        17 novembre 2017 à 21:18:49

        Oh, j'ai l'air bête en regardant ta solution, j'ai beaucoup de chemin à faire 

        Merci infiniment pour ta réponse, je vais essayer dés que j'aurais un accès à mon ordi .

        Encore une fois merci     

        -
        Edité par khaleddjellal1 20 novembre 2017 à 8:30:57

        • Partager sur Facebook
        • Partager sur Twitter

        Commande uniq script shell

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown