Partage
  • Partager sur Facebook
  • Partager sur Twitter

script en bash

    18 août 2021 à 15:43:32

    Bonjour, j'ai une question : j'essaye de créer un script en bash qui inverse chacun des mots d’une phrase.

    Exemple : bonjour ça va => ruojnob aç av

    Quelqu'un pourrait m'aider s'il vous plait ? je suis perdu 

    Merci et bonne journée à vous 

    • Partager sur Facebook
    • Partager sur Twitter
      18 août 2021 à 16:45:10

      L'intérêt des scripts, c'est d'assurer l'enchaînement de commandes, pas de faire du traitement de chaînes de caractères, pour lequel ils sont très mal équipés (surtout les shells).

      bref, on cherche un peu et on trouve qu'il existe une commande rev

      REV(1)                           User Commands                          REV(1)
      
      NAME
             rev - reverse lines characterwise
      
      SYNOPSIS
             rev [option] [file...]
      
      DESCRIPTION
             The  rev utility copies the specified files to standard output, revers‐
             ing the order of characters in every line.  If no files are  specified,
             standard input is read.
      


      Reste plus qu'à s'en servir correctement. Mais tu ne nous as pas dit d'où venait la phrase, si ce n'est pas plutôt une ligne etc.

      Par exemple

      $ echo "même avec des caractères accentués" | rev
      séutnecca serètcarac sed ceva emêm
      

      ou une seule ligne prise sur l'entrée standard ?

      $ head -1 | rev
      juste la première
      erèimerp al etsuj
      

      Après, en faire un script, c'est de la rigolade.

      #!/bin/bash
      
      # les commandes vont ici
      




      • Partager sur Facebook
      • Partager sur Twitter
        18 août 2021 à 19:20:07

        et si ta prochaine question est : « comment inverser l'ordre des lignes d'un fichier ? »
        la réponse est :

        rev <<<'cat'
        • Partager sur Facebook
        • Partager sur Twitter

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

          18 août 2021 à 20:04:06

          • dantonq a écrit:

            et si ta prochaine question est : « comment inverser l'ordre des lignes d'un fichier ? »
            la réponse est :

            rev <<<'cat'
          Voir la commande "tac"

          • Partager sur Facebook
          • Partager sur Twitter
            18 août 2021 à 20:38:40

            spoileur !

            :)

            • Partager sur Facebook
            • Partager sur Twitter

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

              18 août 2021 à 23:26:51

              Bonsoir,

              Pour le «fun», sans utiliser de commandes externes à bash:

              word="abcd"
              drow=""
              for (( i = 1; i <= ${#word}; i++ )); do
                  drow+="${word: -$i:1}"
              done
              echo "$drow"



              • Partager sur Facebook
              • Partager sur Twitter
                18 août 2021 à 23:39:11

                $ mots="parce que j'ai l'esprit de contradiction"
                $ for (( i=${#mots}; i>=0; i-- )); do o+="${mots:$i:1}"; done
                $ echo "$o"
                :D

                -
                Edité par dantonq 18 août 2021 à 23:39:35

                • Partager sur Facebook
                • Partager sur Twitter

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

                  19 août 2021 à 8:36:16

                  C'est dommage que l'apprentissage des scripts se fasse sur des exemples qui n'ont rien à voir avec leur vraie utilité.

                  Ca sert à convaincre les gens qu'on peut faire en bash, à condition de se compliquer la vie avec un langage qui n'est pas fait pour ça, des trucs qui ne servent à rien et qui se font direct avec n'importe quel langage ? 

                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 août 2021 à 14:10:26

                    Merci à tous ! je vais regarder ça, si il y en a parmi vous qui ont discord je suis preneur pour des explications un peu plus poussées...

                    Voici mon discord : Max le boss#1139

                    Bonne journée 

                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 août 2021 à 17:25:10

                      si il y en a parmi vous qui ont discord je suis preneur pour des explications un peu plus poussées

                      autre sujet -> nouvelle discussion !

                      • Partager sur Facebook
                      • Partager sur Twitter

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

                        20 août 2021 à 0:26:10

                        michelbillaud a écrit:

                        C'est dommage que l'apprentissage des scripts se fasse sur des exemples qui n'ont rien à voir avec leur vraie utilité.

                        Ca sert à convaincre les gens qu'on peut faire en bash, à condition de se compliquer la vie avec un langage qui n'est pas fait pour ça, des trucs qui ne servent à rien et qui se font direct avec n'importe quel langage ? 


                        Tous les systèmes n'ont pas ces fameux langages qui le font direct. Certains viennent qu'avec sh, ash ou csh comme langage de script.

                        Par exemple, si on veut créer des scripts qui prennent des flags/options (script.sh --help, script.sh -v, script.sh --foo bar -a 0), il est alors utile de savoir parser des chaînes de caractères.

                        Le but de cet exercice est aussi de CHERCHER la réponse, de se balader dans la doc, d'apprendre à utiliser le man. Pas de donner la commande qui va bien directement.



                        • Partager sur Facebook
                        • Partager sur Twitter
                          23 août 2021 à 15:08:29

                          michelbillaud a écrit:

                          L'intérêt des scripts, c'est d'assurer l'enchaînement de commandes, pas de faire du traitement de chaînes de caractères, pour lequel ils sont très mal équipés (surtout les shells).

                          bref, on cherche un peu et on trouve qu'il existe une commande rev

                          REV(1)                           User Commands                          REV(1)
                          
                          NAME
                                 rev - reverse lines characterwise
                          
                          SYNOPSIS
                                 rev [option] [file...]
                          
                          DESCRIPTION
                                 The  rev utility copies the specified files to standard output, revers‐
                                 ing the order of characters in every line.  If no files are  specified,
                                 standard input is read.
                          


                          Reste plus qu'à s'en servir correctement. Mais tu ne nous as pas dit d'où venait la phrase, si ce n'est pas plutôt une ligne etc.

                          Par exemple

                          $ echo "même avec des caractères accentués" | rev
                          séutnecca serètcarac sed ceva emêm
                          

                          ou une seule ligne prise sur l'entrée standard ?

                          $ head -1 | rev
                          juste la première
                          erèimerp al etsuj
                          

                          Après, en faire un script, c'est de la rigolade.

                          #!/bin/bash
                          
                          # les commandes vont ici
                          




                          En fait, les mots ne doivent pas bouger de places dans la phrase : le mot "bonjour" doit rester à la première place dans la phrase et pas à la fin de celle ci. Je savais que la commande rev existait mais je ne sais pas si il en existe une juste pour inverser les lettres d'un mot sans changer l'ordre des mots.

                           Merci quand même.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            23 août 2021 à 18:08:08

                            Bonjour,

                            Tu peux passer d'une chaîne de caractère en un tableau avec les commandes built-in de bash read ou readarray.

                            Exemple:

                            $ read -ra words <<< "Bonjour ça va"
                            $ echo "${#words[@]}"
                            3
                            $ echo "${words[0]}
                            Bonjour
                            • Partager sur Facebook
                            • Partager sur Twitter

                            script en bash

                            × 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