Partage
  • Partager sur Facebook
  • Partager sur Twitter

Grep -v

Sujet résolu
    15 mars 2018 à 12:21:42

    Bonjour,

    J'aimerais voir si un fichier contient autre chose que des espaces, des chiffres et '-' (le signe moins). Bref, j'aimerais voir si un fichier contient autre chose que des espaces et des entiers relatifs.

    J'ai essayé grep -v [- 0123456789] mais cela ne fonctionne pas je crois. Merci d'avance pour votre aide ?

    • Partager sur Facebook
    • Partager sur Twitter
      15 mars 2018 à 14:38:29

      salut,

      cela ne fonctionne pas je crois.

      pourquoi ? quel est le résultat de la commande ?

      • Partager sur Facebook
      • Partager sur Twitter

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

        15 mars 2018 à 15:41:31

        Je reçois:

        [] imbalance

        • Partager sur Facebook
        • Partager sur Twitter
          15 mars 2018 à 17:13:07

          je n'ai jamais vu ce message d'erreur venant de grep; t'es sur quel environnement ?

          c'est probablement l'espace qui coupe la regex (qui n'en est plus une du coup ;) ) en deux mots :

          grep -v '[- 0-9]'
          • Partager sur Facebook
          • Partager sur Twitter

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

          Anonyme
            15 mars 2018 à 22:38:31

            Salut,

            Law. a écrit:

            Bref, j'aimerais voir si un fichier contient autre chose que des espaces et des entiers relatifs.

            Si tu as des lignes contenant un entiers ou un espace ou un tiret mais aussi d'autres caractères, tu n'auras pas de retour ( toutes les lignes contenant un tiret, un espace ou un chiffre sont éliminées). Je ne suis pas sur que c'est ce que tu souhaites. Je te propose donc dans ce cas:

            grep -Ev "^(-?[0-9]|[[:space:]])+$"
            • Partager sur Facebook
            • Partager sur Twitter
              16 mars 2018 à 14:31:08

              Bonjour,

              perso je ferais un simple

              grep -E "[^0-9\-\ ]+"

              ça retourne toutes les lignes qui contiennent autre chose que 0 à 9, tiret et espace.

              le ^ signifie "tout ce qui n'est pas".

              Cordialement.

              • Partager sur Facebook
              • Partager sur Twitter
                16 mars 2018 à 15:49:46

                Je suis sur un vieux Unix effectivement (enfin je suspecte qu'il soit vieux)

                Vos deux commandes n'ont pas fonctionné sur mon fichier malheureusement. La première m'a rendu 338 lignes, toutes ayant un tiret quelque part. L'autre m'a rendu les 144.952 lignes du fichier.

                Le fichier contient des lignes de 11 caractères, commençant toutes par des espaces et se terminant par un entier. Petit échantillon:

                     -28000
                      38359
                        084
                       1190
                       3190
                        011
                        275
                        422
                      67020
                        858

                Et j'aimerais donc que grep me renvoie toutes les lignes qui ne sont pas dans ce format. (Et donc dans le cas idéal où il n'y a pas d'erreur dans le fichier, grep ne renverrait rien.)

                Merci pour votre aide jusqu'à présent déjà :)

                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  16 mars 2018 à 16:42:25

                  Tu es sur quel distribution ?

                  Sinon, en assumant que toute les lignes font bien 11 caractères:

                  grep -Ev "^[[:space:]]{1,10}-?[0-9]{1,10}$"

                  -
                  Edité par Anonyme 16 mars 2018 à 16:46:08

                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 mars 2018 à 17:55:30

                    en présumant != assumer

                    • Partager sur Facebook
                    • Partager sur Twitter

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

                    Anonyme
                      16 mars 2018 à 21:47:28

                      Effectivement, pas très français tout ça :(
                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 mars 2018 à 9:21:38

                        Ca marche impeccablement, merci beaucoup !

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Grep -v

                        × 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