Partage
  • Partager sur Facebook
  • Partager sur Twitter

Shell BASH command cut

    29 janvier 2015 à 14:00:54

    Bonjour,

    Si j'utilise la commande c'est bon. Je récupère la partie de la chaine qui m'interresse.
    Server-NAS:~# nc 192.168.1.25 4000 | grep -E ^BASE
    BASE 011653775 .
    BASE 011653775 .
    BASE 011653775 .
    BASE 011653775 .
    

    mais j'aimerai isoler la partie numérique. Alors je rajoute la commande cut

    nc 192.168.1.25 4000 | grep -E ^BASE | cut -c1 

    La je ne reçois plus rien même lorsque je change les paramètres de cut.

    >>>ok je sais que -c1 n'est pas le bon paramètre mais c'est un essai. Je devrais au moins récupèrer le "B" de "BASE".

    • Partager sur Facebook
    • Partager sur Twitter
    Michael-kael1 Apprendre quelque chose de nouveau c'est découvrir un nouveau monde
      29 janvier 2015 à 14:38:26

      Bonjour, essaye

      cut -c 6-14



      • Partager sur Facebook
      • Partager sur Twitter

      Monteur et motion designer chez OpenClassrooms

        29 janvier 2015 à 14:47:11

        Bonjour

        Merci pour ta réponse.

        Pareil

        nc 192.168.1.25 4000 | grep -E ^BASE | cut -c 6-14 


        La commande est acceptée et elle tourne. Mais je n'ai aucune valeur qui s'affiche.

        • Partager sur Facebook
        • Partager sur Twitter
        Michael-kael1 Apprendre quelque chose de nouveau c'est découvrir un nouveau monde
          29 janvier 2015 à 14:56:33

          Bonjour ,

          # cat toto.txt 



          BASE 011653775 .
          BASE 011653775 .
          BASE 011653775 .
          BASE 011653775 .
          BLABLA 56987450 .
          BASE 00000070 .

          grep -E ^BASE toto.txt|cut -d" " -f2



          011653775
          011653775
          011653775
          011653775
          00000070

          -
          Edité par vm500 29 janvier 2015 à 14:58:07

          • Partager sur Facebook
          • Partager sur Twitter
            29 janvier 2015 à 15:12:20

            Bonjour,

            je suis d'accord avec vous les gas mais moi ça ne marche pas.

            Je suis connecté sur mon NAS via Putty. est ce que ça pourrait être une raison? J'allume ma VMware et je fais le test et je vous dis.

            • Partager sur Facebook
            • Partager sur Twitter
            Michael-kael1 Apprendre quelque chose de nouveau c'est découvrir un nouveau monde
              29 janvier 2015 à 15:29:01

              test 1- J'ai fait le même test vm500 et j'ai le même résultat avec mes 2 machines :soleil:.

              michael@michael-VirtualBox:~$ cat toto.txt
              SE 011653775 .
              BASE 011653775 .
              BASE 011653775 .
              BASE 011653775 .
              BLABLA 56987450 .
              BASE 00000070 .
              michael@michael-VirtualBox:~$ grep -E BASE toto.txt|cut -d" " -f2
              011653775
              011653775
              011653775
              00000070
              
              

              test 2- Je fait le test avec la commande nc et la même commande cut. La ça ne fonctionne pas.

              nc 192.168.1.25 4000 | grep -E ^BASE | cut -c 6-14
              

              test 3- si j'enlève grep, le cut fonctionne :colere:

              Server-NAS:~# nc 192.168.1.25 4000 | cut -c 6-14
              H.. $
               003 Z
              041 D
              00680 /
              TAT 00000
              031128464
              IF BASE 0
              C 30 9
              011654667
              TH.. $
               003 Z
              

              est ce que ça pourrait venir d'un problème de buffer? est ce qu'il faut mettre les chaines éjectée par grep dans /dev/null?
              • Partager sur Facebook
              • Partager sur Twitter
              Michael-kael1 Apprendre quelque chose de nouveau c'est découvrir un nouveau monde
                29 janvier 2015 à 15:46:36

                Salut,

                On a fait un truc similaire ici :

                http://openclassrooms.com/forum/sujet/grep-et-regex-pour-adresse-mail-qui-ne-fonctionne

                Ce qui donnerait pour toi :

                nc 192.168.1.25 4000 | grep -E ^BASE | egrep -o '[0-9]'
                • Partager sur Facebook
                • Partager sur Twitter
                  3 février 2015 à 21:24:45

                  Hey,

                  Sinon, si ta commande cut ne marche pas une alternative possible, utiliser la commande awk :

                  awk '{print $2} qui affichera la deuxième colonne,  donc pour toi :

                  nc 192.168.1.25 4000 | awk '{print $2}'


                  -
                  Edité par Mobius00 3 février 2015 à 21:25:46

                  • Partager sur Facebook
                  • Partager sur Twitter
                    7 février 2015 à 22:53:38

                    salut,

                    ça a l'air de fonctionner :

                    grep -Po '^BASE[^[:blank:]]*[[:blank:]]*\K([^[:blank:]]*)'
                    • Partager sur Facebook
                    • Partager sur Twitter

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

                    Shell BASH command cut

                    × 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