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 07/07/2006, 15h03   #1
Invité régulier
 
Inscription : novembre 2003
Messages : 149
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 149
Points : 9
Points : 9
Par défaut Saut de ligne avec sed

Bonjour,

j'ai un fichier qui contient deux points virgules qui se suivent.

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
 
cat fic
 
/*
%tete
*/
 
aeae:DEBC= ; %toto1;
'/*'
 
 
%tete2;
 
 
si je rencontre un ; qui est suivi par du texte je doit sauter de ligne
 
 
sed 's/;[^*]/`echo \n`/g' fic
 
 
 
càd obtenir:
 
aeae:DEBC= ; 
%toto1;
Merci de votre aide
melmouj est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 15h05   #2
Rédacteur
 
Inscription : juillet 2004
Messages : 2 573
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juillet 2004
Messages : 2 573
Points : 1 973
Points : 1 973
Bonjour, quel est ton problème exactement ? Je pose la question car mon petit cerveau commence à faiblir
__________________
.Olivier
Olivier Regnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 15h20   #3
Invité régulier
 
Inscription : novembre 2003
Messages : 149
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 149
Points : 9
Points : 9
Par défaut Saut de ligne avec sed

Citation:
Envoyé par Larkine
Bonjour, quel est ton problème exactement ? Je pose la question car mon petit cerveau commence à faiblir
si je rencontre un point virgule suivi d'un texte je dois sauter la ligne
pour moi le point virgule est la fin de ligne.

donc dans mon fichier j'ai deux lignes sur une seule ligne:
aeaeEBC= ; %toto1;

il faut que je fasse ça:

aeaeEBC= ;
%toto1;
melmouj est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 15h35   #4
Membre régulier
 
Inscription : mars 2004
Messages : 106
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 106
Points : 94
Points : 94
Envoyer un message via MSN à insupien Envoyer un message via Yahoo à insupien Envoyer un message via Skype™ à insupien
Code :
1
2
3
4
5
6
for ligne in `cat fic`
do
   awk (avec ';' comme delim)
   tu prends tes $1 ... $n
 
done
un truc ds ce genre
__________________
Amine
insupien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 16h06   #5
Membre Expert
 
Avatar de 2Eurocents
 
Inscription : septembre 2004
Messages : 2 180
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : septembre 2004
Messages : 2 180
Points : 2 442
Points : 2 442
Code :
sed -r 's/(;)(.)/\1\n\2/g' fichier
Cela devrait fonctionner.
__________________
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
2Eurocents est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2006, 15h16   #6
Invité régulier
 
Inscription : novembre 2003
Messages : 149
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 149
Points : 9
Points : 9
Par défaut Saut de ligne avec sed

Malhereusement non.



Citation:
Envoyé par 2Eurocents
Code :
sed -r 's/(;)(.)/\1\n\2/g' fichier
Cela devrait fonctionner.
Code :
1
2
3
4
5
6
7
8
 
 
sed -r 's/(;)(.)/\1\n\2/g' fichier
 
sed: illegal option -- r
Usage: sed [-n] [-e script] [-f source_file] [file...]
 
je suis sous unix HP-UX
melmouj est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2006, 15h36   #7
Membre régulier
 
Inscription : mars 2004
Messages : 106
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 106
Points : 94
Points : 94
Envoyer un message via MSN à insupien Envoyer un message via Yahoo à insupien Envoyer un message via Skype™ à insupien
Code :
1
2
3
4
for ligne in `cat fichier | tr -s ";" "\n"`
do
echo $ligne ";"
done
je suis sous HP unix est ca marche.
__________________
Amine
insupien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2006, 15h57   #8
Membre Expert
 
Avatar de 2Eurocents
 
Inscription : septembre 2004
Messages : 2 180
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : septembre 2004
Messages : 2 180
Points : 2 442
Points : 2 442
Citation:
Envoyé par melmouj
je suis sous unix HP-UX
Argh ... je n'ai pas de HP-UX pour essayer.
Il est vrai que l'option de commande -r est une option spécifique GNU.

Essayons de faire sans ...

Peux-tu essayer ceci :
Code :
sed 's/;\b/;\n/g' fichier
Je ne sais pas si le sed HP-UX reconnait le motif "magique" \b ... Ce motif matche avec n'importe quelle portion de mot, sans toutefois la mémoriser, ce qui la rend disponible pour un usage ultérieur.
__________________
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
2Eurocents est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2006, 16h27   #9
Invité régulier
 
Inscription : novembre 2003
Messages : 149
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 149
Points : 9
Points : 9
Par défaut sed saut de ligne

ça ne marche pas


Citation:
Envoyé par 2Eurocents
Argh ... je n'ai pas de HP-UX pour essayer.
Il est vrai que l'option de commande -r est une option spécifique GNU.

Essayons de faire sans ...

Peux-tu essayer ceci :
Code :
sed 's/;\b/;\n/g' fichier
Je ne sais pas si le sed HP-UX reconnait le motif "magique" \b ... Ce motif matche avec n'importe quelle portion de mot, sans toutefois la mémoriser, ce qui la rend disponible pour un usage ultérieur.
melmouj est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2009, 10h00   #10
Invité régulier
 
Inscription : novembre 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 15
Points : 8
Points : 8
Dans un fichier, remplace les ';' suivit d'au moins 1 caractère par des sauts de ligne:
Code :
sed "s/;\(.\+\)/;\n\1/g" -i fichier
ex:
Code :
1
2
3
$ echo "ceci est un test ; he oui" | sed "s/;\(.\+\)/;\n\1/g"
ceci est un test ;
 he oui
dagos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2009, 11h00   #11
Membre habitué
 
Inscription : mai 2007
Messages : 138
Détails du profil
Informations personnelles :
Âge : 59

Informations forums :
Inscription : mai 2007
Messages : 138
Points : 108
Points : 108
Citation:
Envoyé par dagos Voir le message
Dans un fichier, remplace les ';' suivit d'au moins 1 caractère par des sauts de ligne:
Code :
sed "s/;\(.\+\)/;\n\1/g" -i fichier
ex:
Code :
1
2
3
$ echo "ceci est un test ; he oui" | sed "s/;\(.\+\)/;\n\1/g"
ceci est un test ;
 he oui
Ca marche pas sous HP-UX
noooop est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2009, 11h57   #12
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 073
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 073
Points : 4 165
Points : 4 165
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
echo "/*
%tete
*/

aeae:DEBC= ; %toto1;
'/*'


%tete2;" | sed --posix 's/;./\n/g'
/*
%tete
*/

aeae:DEBC= 
%toto1;
'/*'


%tete2;
ou
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
echo "/*
%tete
*/

aeae:DEBC= ; %toto1;
'/*'


%tete2;" | sed --posix 's/;./\
 /g'
/*
%tete
*/

aeae:DEBC= 
%toto1;
'/*'


%tete2;
...
?

l'option --posix n'est là que pour tester l'expression utilisée.
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2009, 12h59   #13
Membre habitué
 
Inscription : mai 2007
Messages : 138
Détails du profil
Informations personnelles :
Âge : 59

Informations forums :
Inscription : mai 2007
Messages : 138
Points : 108
Points : 108
marche pas non plus:
Code :
1
2
3
$ echo "w1;w2;" | sed --posix 's/;./\n/g'
sed: illegal option -- -
Usage: sed [-n] [-e script] [-f source_file] [file...]
noooop est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2009, 13h07   #14
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 073
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 073
Points : 4 165
Points : 4 165
Citation:
l'option --posix n'est là que pour tester l'expression utilisée.
étant sous-entendu, qu'il ne faut l'utiliser qu'avec GNU/sed
(elle n'a pas de raison d'être pour POSIX/sed)
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2009, 14h03   #15
Membre habitué
 
Inscription : mai 2007
Messages : 138
Détails du profil
Informations personnelles :
Âge : 59

Informations forums :
Inscription : mai 2007
Messages : 138
Points : 108
Points : 108
excuse moi j'avais pas compris
noooop 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 10h19.


 
 
 
 
Partenaires

Hébergement Web