Editer texte

Résolu
ojou Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   -  
ojou Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   -
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

14 réponses

ojou Messages postés 51 Date d'inscription   Statut Membre Dernière intervention  
 
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...
0
toto
 
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 !
0
ojou Messages postés 51 Date d'inscription   Statut Membre Dernière intervention  
 
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...
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ojou Messages postés 51 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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.
0
ojou Messages postés 51 Date d'inscription   Statut Membre Dernière intervention  
 
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...
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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]$
0
ojou Messages postés 51 Date d'inscription   Statut Membre Dernière intervention  
 
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!
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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 ;-))
0
ojou Messages postés 51 Date d'inscription   Statut Membre Dernière intervention  
 
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 !!
0
ojou Messages postés 51 Date d'inscription   Statut Membre Dernière intervention  
 
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...
0
ojou Messages postés 51 Date d'inscription   Statut Membre Dernière intervention  
 
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...
0
ojou Messages postés 51 Date d'inscription   Statut Membre Dernière intervention  
 
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 !
0