Editer texte

Résolu
Bonjour,

J'ai un petit problème de découpage de texte, j'ai une ligne dans laquel je veux insérer 2 "phrases":

ma ligne: blablablablablabla blablablablabla blablablablabla
je fais un cut sur une autre phrase pour récuperer ce qu'il me faut et je voudrais les insérer:

blablablablabla phrase1 blablablablabla phrase2 blablablablabla

Le probleme c'est que je ne sais pas combien de mots contiennent mes phrases...
Il me faut donc un truc pour "coller" un bout de phrase ou je veux... je sais le faire pour des mots mais pas pour des phrases
Configuration: AIX 5.1

14 réponses

  1. Bon j'ai utiliser awk -f "séparateur" 'print "tache" $1 " heure" $2 '
    et ça marche comme ça.... j'avais pas vu cette option, elle est très pratique !
    1. En résumé:

      Si j'utilise " awk" alors je peu sortir lle premier mot avec $1. Y a t-il un moyen d'utiliser tout ce qui succede à ce mot à l'aide d'une seul variable du meme genre? sachant que je n'ai aucune idée du nombre de mot qui se suivent...
      1. Ou peut-être c'est possible avec sed ou awk de mettre plusieurs mot dans une variable grace à un délimiteur...
        Je fais man sed mais mon anglais n'est pas formidable.... enfin bon je vais essayer de me débrouiller...
        1. salut [Dal]

          Ta solution ne change rien à mon fichier.txt...

          Jipicy,

          Oui le tache blablablab heure mercredi 15h30 est ce que je voudrais aficher pour chaque ligne...
          Je ne sais pas trop comment faire, peut-être qu'ilfaudrait que je remonte plus haut pour résoudre le probleme...
          Je vais voir, en tous cas merci à tous !!
          1. Modérateur
            tache blablabla heure: mercredi 15h30
            Ça c'est le résultat, non ?

            Ton script initial lui contient toujours la même chose, à savoir :

            J'ai fait un script de manière a obtenir :

            /usr/bin/errclear lancée à 11h00
            /usr/bin/errclear lancée à 12h00
            /usr/lib/ras/dumpcheck lancée à 15h00
            /etc/soir lancée à 01h30
            /home/adm/surveillance/surveillance_system lancée à 07h00


            Donc c'est dans le formatage de la sortie qu'il faut l'inclure !
            Là, je rame ;-))
            1. Contributeur
              Salut ojou,

              utilise :

              cat fichier.txt | sed 's/\(^.* \)\(lancée à \)\(.*$\)/tâche : \1 heure :\3/'

              Pour afficher ce qu'il y a avant et après "lancée à" ligne par ligne.

              Dal
              1. Contributeur
                Errata:

                cat fichier.txt | sed 's/\(^.*\)\( lancée à \)\(.*$\)/tâche : \1 heure : \3/'

                Fonctionne mieux et, sauf erreur, quels que soient le nombre de "mots" avant ou après "lancée à".

                Dal
            2. ok je suis d'accord pour ça mais le probleme c'est qu'il n'y aura pas forcément une seule heure, il peut y avoir:

              tache blablabla heure: mercredi 15h30

              Et là ta solution ne marche pas...
              Il faut quelque chose pour mettre en variable ce qui de trouve après le 'lancée' mais ligne par ligne
              Merci quand même!
              1. Modérateur
                Re,

                Essaie comme ça :
                [jp@Mandrake tmpfs]$ cat fichier.txt
                /usr/bin/errclear lancée à 11h00
                /usr/bin/errclear lancée à 12h00
                /usr/lib/ras/dumpcheck lancée à 15h00
                /etc/soir lancée à 01h30
                /home/adm/surveillance/surveillance_system lancée à 07h00
                
                [jp@Mandrake tmpfs]$ cat fichier.txt | awk ' { print "tâche : " $1" heure : "$4 }'
                tâche : /usr/bin/errclear heure : 11h00
                tâche : /usr/bin/errclear heure : 12h00
                tâche : /usr/lib/ras/dumpcheck heure : 15h00
                tâche : /etc/soir heure : 01h30
                tâche : /home/adm/surveillance/surveillance_system heure : 07h00
                
                [jp@Mandrake tmpfs]$
                1. Voila ma liste des taches:

                  0 11 * * * /usr/bin/errclear -d S,O 30
                  0 12 * * * /usr/bin/errclear -d H 90
                  0 15 * * * /usr/lib/ras/dumpcheck >/dev/null 2>&1
                  30 01 * * * /etc/soir 1>/tmp/soir_trc 2>/tmp/soir_err
                  00 07 * * * /home/adm/surveillance/surveillance_system

                  J'ai fait un script de manière a obtenir :

                  /usr/bin/errclear lancée à 11h00
                  /usr/bin/errclear lancée à 12h00
                  /usr/lib/ras/dumpcheck lancée à 15h00
                  /etc/soir lancée à 01h30
                  /home/adm/surveillance/surveillance_system lancée à 07h00

                  et maintenant je souhaite mettre ces réponses sous forme de tableau, j'ai donc fait un cut pour prendre la partie avant et après "lancée":

                  var1=`cut -f 1 -d ' lancée ' fic`
                  var2=`cut -f 3- -d ' lancée ' fic`

                  print " tache"$var1 " date "$var2"

                  Le probleme c'est que dans var1 il y a :/usr/bin/errclear /usr/bin/errclear /usr/lib/ras/dumpcheck ....

                  et de même dans var2 : 11h00 12h00.....

                  Alors qu'il faudrait écrire tache... date... pour chaque ligne.

                  J'espere avoir été clair... c'est vrai que je suis pas doué pour les explications...
                  1. Effectivement ça arche mais là je vois un autre probleme:
                    J'ai plusieurs phrases dans un fichier et je veux créer, à chaque fois, la même ligne en y ajoutant des bouts de la premiere phrase, puis de la 2em... et avec cette solution ça me les mets toutes d'un coup car le cut .... gere toutes les lignes d'un coup et mais donc dans ma variable plusieurs phrases
                    1. Modérateur
                      J'ai pas tout compris là :-\
                      Tu peux donner un exemple concret s'il te plaît !
                      Donne ton script aussi tant que t'y es (commenté si possible).
                      Merci.
                  2. Modérateur
                    Salut,

                    Il me faut donc un truc pour "coller" un bout de phrase ou je veux... je sais le faire pour des mots mais pas pour des phrases
                    Suffit de "récupérer" tes phrases dans des variables, et de coller ces variables où bon te semble.
                    1. Merci de ta réponse mais:

                      Comment referai-tu la même chose sans savoir ce que tu vas ajouter, comme si tu devais lire ton "domage non?" dans un fichier...
                      1. fichier :
                        le chat est mort mais il pleut

                        cat fichier | cut -d' mort' -f1 >>  fichier2 && echo "domage non ?" >> fichier2 && cat fichier | cut -d' mort' -f2 && echo "ca par contre c'est dur !" >> fichier2


                        et ton fichier2 contient bien

                        Le chat est mort domage non ? mais il pleu ca par contre c'est dur !
                        1. Bon je devrais peut-être reformuler ma question:

                          Je cherche une commande qui me permet de récupérer des "bouts" de phrases (plusieurs mots). Un genre de awk mais avec plusieurs mots...
                          voila... en espérant une réponse...