|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Étudiant Inscription : mars 2011 Messages : 16 ![]() |
Bonjour,
Donc j'ai un petit problème. Par exemple j'ai un fichier: La Lo La Lo La Je voudrais rajouter au premier La un text, donc je suis partie avec la commande sed. Code :
sed '/La/' "a\Dans le nord il fait froid" exfichier Voici le résultat et qu'il me met à chaque La. La Dans le nord il fait froid Lo La Dans le nord il fait froid Lo La Dans le nord il fait froid Donc je trouve pas d'expression régulière pour prendre juste le premiers ou le deuxième La par exemple la seul solution qui marche c'est d'utiliser les numéros de lignes je veux passer par les motif. Cordialement KISEKI. |
|
|
10
|
|
|
#2 | ||
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Salut,
Code :
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
||
|
|
20
|
|
|
#3 | |||
|
Membre du Club
![]() Inscription : septembre 2011 Messages : 54 ![]() |
Citation:
Peux-tu STP expliquer la signification de chacun des membres de ta combinaison suivante : Dans ma version de sed 4.1.5, je n'ai pas toutes ces options, outre que je suis débutant et aimerais comprendre pas à pas la signification des choses D'ailleurs, en testant cela tout seul, j'ai compris que si je souhaite ajouter des xxxx avec espace sur la même ligne, après le premier "La" (et pareil pour les autres !), il m'a suffit de faire : et si je veux le faire avec vi directement dans un fichier, alors c'est encore plus facile : |
|||
|
|
00
|
|
|
#4 | |
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Salut,
Citation:
En fait dans ce que tu cites, seuls N, ! et b sont des options ou paramètres de sed, "$" est dans ce cas une adresse désignant la dernière ligne, et ":z" une étiquette. Il faut savoir que sed est un éditeur de flux, qui traite par conséquent les lignes d'un fichier passé en paramètre une par une en les plaçant dans ce qu'on a coutume d'appeler l'espace de travail (ou mémoire principale). Donc pour résumer : :z Étiquette qu'on nomme "z" (on peut aussi lui donner un nom, par exemple ":boucle). On place une référence dans notre script afin de pouvoir y retourner et créer ainsi une boucle qui nous permettra de nous y brancher quand une condition sera satisfaite, ou pas selon ce qu'on doit traiter... N Commande qui ajoute dans l'espace de travail la ligne suivante. A ce moment là l'espace de travail contient la 1ère ligne, suivie de la seconde séparées par le caractère de saut de ligne "\n" $! $ représente l'adressage de la dernière ligne. ! représente la négation. Les 2 combinés s'interprètent ainsi : si la dernière ligne n'est pas dans l'espace de travail, faire ce qui suit... bz b commande de branchement z l'étiquette où se brancher Donc si la dernière ligne n'est pas dans l'espace de travail, se brancher à l'étiquette "z", et ainsi de suite tant qu'on n'aura pas atteint la dernière ligne. Une fois la dernière ligne atteinte, tout le contenu du fichier se trouve dans la mémoire principale, et est vu comme une seule et même ligne avec le caractère "\n" comme séparateur de chaque ligne initiale. A partir de là le traitement peut être effectué avec le reste des commandes (s/La/&\nxxxxxxx/M1). Ici la subtilité réside dans l'utilisation du "flag" (drapeau) "M", combiné à l'autre flag "n" (ou "n" est un entier) qui permet de différencier chaque ligne individuellement au sein même de la mémoire principale.
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
|
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : septembre 2011 Messages : 54 ![]() |
Merci beaucoup, j'ai bien compris la combinaison de tout cela...
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com