Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/10/2011, 14h59   #1
Invité régulier
 
Homme
Étudiant
Inscription : mars 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2011
Messages : 16
Points : 8
Points : 8
Par défaut Konsole:Commande Sed insertion.

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.
KISEKI est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/10/2011, 15h25   #2
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$ cat glop
La
Lo
La
Lo
La
 
$ sed ':z;N;$!bz;s/La/&\nxxxxxxx/M1' glop 
La
xxxxxxx
Lo
La
Lo
La
 
$ sed ':z;N;$!bz;s/La/&\nxxxxxxx/M2' glop 
La
Lo
La
xxxxxxx
Lo
La
 
$ sed ':z;N;$!bz;s/La/&\nxxxxxxx/M3' glop 
La
Lo
La
Lo
La
xxxxxxx
 
$
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est actuellement connecté   Envoyer un message privé Réponse avec citation 20
Vieux 20/10/2011, 04h44   #3
Membre du Club
 
Femme
Inscription : septembre 2011
Messages : 54
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : septembre 2011
Messages : 54
Points : 52
Points : 52
Citation:
Envoyé par zipe31 Voir le message
Salut,

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$ cat glop
La
Lo
La
Lo
La
 
$ sed ':z;N;$!bz;s/La/&\nxxxxxxx/M1' glop 
La
xxxxxxx
Lo
La
Lo
La
 
$ sed ':z;N;$!bz;s/La/&\nxxxxxxx/M2' glop 
La
Lo
La
xxxxxxx
Lo
La
 
$ sed ':z;N;$!bz;s/La/&\nxxxxxxx/M3' glop 
La
Lo
La
Lo
La
xxxxxxx
 
$
Bonjour zipe31,

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 :

Code :
sed ':z;N;$!bz;s/La/& xxxx/M1' glop
et si je veux le faire avec vi directement dans un fichier, alors c'est encore plus facile :

bras39 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 09h43   #4
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Citation:
Envoyé par bras39 Voir le message
Bonjour zipe31,

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
[/code]
Si si, toutes ces options existent dans ta version de sed et même dans les versions antérieures.

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.
zipe31 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 10h28   #5
Membre du Club
 
Femme
Inscription : septembre 2011
Messages : 54
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : septembre 2011
Messages : 54
Points : 52
Points : 52
Merci beaucoup, j'ai bien compris la combinaison de tout cela...
bras39 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h10.


 
 
 
 
Partenaires

Hébergement Web