Forum Linux.débutant GREP ? recherche dans un fichier > -100

Posté par  .
Étiquettes : aucune
0
23
mar.
2010
Voilà je suis novice avec linux et j'aimerai faire un script effectuant une recherche dans un fichier plat de toutes les valeurs > -100.
grep conviendrait-il et de quelle manière formuler mon script ?
D'avance merci de vos éclaircissements.....
  • # awk

    Posté par  (site web personnel) . Évalué à 2.

    Si tu as une seule valeur en début de ligne, tu peux faire ça:

    awk '{if ($1 > -100) print $0}' toto.txt

    ça affiche toutes les lignes qui commencent par un nombre plus grand que -100.

    Et si ton format c'est autre chose, peux-tu détailler STP ?
    • [^] # Re: awk

      Posté par  (site web personnel, Mastodon) . Évalué à 1.

      fichier plat, donc je pense que c'est du type 42 806 33 -101

      for i in `cat fichier`
      then
      if [ $i -gt -100 ]
      then
      echo $i est au dessus
      else
      echo il est en dessous
      fi


      pas testé, y a sans doute mieux, mais bon là c'est comme ça c'est ce que je ferai. Et pour répondre à la question, grep tout court retourne des lignes complète. Un fichier plat en théorie contient plusieurs valeurs par ligne…
      • [^] # Re: awk

        Posté par  (site web personnel, Mastodon) . Évalué à 3.

        for i in `cat fichier`
        do
        if [ $i -gt -100 ]
        then
        echo $i est au dessus
        else
        echo il est en dessous
        fi
        done
        • [^] # Re: awk

          Posté par  (site web personnel) . Évalué à 2.

          c'est vrai que de cette manière on est sûr de ne rien louper, s'il y a plusieurs valeurs par ligne. ta solution est certainement celle qui convient le mieux.
        • [^] # Re: awk

          Posté par  (site web personnel) . Évalué à 7.

          1) Useless use of cat. 2) Si tu travailles avec des fichiers qui font plus que quelques Mo, tu bouffes autant de RAM que la taille de ton fichier...
          while read line < fichier; do
            for i in line; do
              # comme avant
            done
          done
    • [^] # Re: awk

      Posté par  . Évalué à 1.

      bonjour, c'est ça, merci pour la rapidité de la réponse.....génial
  • # grep

    Posté par  . Évalué à 1.

    en inversant le critère (éliminer toutes les valeurs <= 100), ça donne un truc comme ça :

    ~$ cat bla
    -35
    -100
    -1000
    38943
    $ grep -v -- "-[0-9]\{3,\}" bla
    -35
    38943


    à adapter s'il y a plusieurs champs par ligne de fichier.
    • [^] # Re: grep

      Posté par  . Évalué à 1.

      merci pour les réponses rapides, je vais mettre en application...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.