Les Allergies
Alimentaires
Posez votre question Signaler

Editer texte [Résolu]

ojou 58Messages postés 31 mai 2005Date d'inscription - Dernière réponse le 1 juin 2005 à 14:58
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
Lire la suite 

Editer texte »

Suggestions
16 réponses
Réponse
+0
moins plus
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...
Ajouter un commentaire
Réponse
+0
moins plus
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 !
Ajouter un commentaire
Réponse
+0
moins plus
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...
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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
jipicy- 31 mai 2005 à 17:06
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.
Ajouter un commentaire
Réponse
+0
moins plus
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...
Ajouter un commentaire
Réponse
+0
moins plus
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]$
Ajouter un commentaire
Réponse
+0
moins plus
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!
Ajouter un commentaire
Réponse
+0
moins plus
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
[Dal]- 1 juin 2005 à 10:08
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
Ajouter un commentaire
Réponse
+0
moins plus
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 ;-))
Ajouter un commentaire
Réponse
+0
moins plus
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 !!
Ajouter un commentaire
Réponse
+0
moins plus
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...
Ajouter un commentaire
Réponse
+0
moins plus
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...
Ajouter un commentaire
Réponse
+0
moins plus
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 !
Ajouter un commentaire
Ce document intitulé « editer texte » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?