|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : janvier 2003 Messages : 130 ![]() |
Bonjour,
J'ai un petit probleme avec une commande SED. Le but est de faire une recherche de regexp et d'inserer un retour à la ligne a des endroits bien precis. J'ai trouver comment faire avec sed en ligne de commande : Fichier test : SED en ligne de commande : Avec ^J qui s'obtient en fesant <ctrl><V> + <ctrl><J> Cette commande remplace l'espace par un retour à la ligne afin d'obtenir : Le problème est que lorsque j'essais de scripter cette commande dans un KSH, le ^J est remplacer par un retour à la ligne dans le KSH ce qui provoque une erreur de syntaxe. Je suis sous KSH (AIX 5.2) Merci d'avance pour votre aide. A+ |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : août 2005 Messages : 8 310 ![]() |
Essaie voir un truc comme ça :
__________________
![]() Du détail, du détail, du détail !!! Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
|
|
|
00
|
|
|
#3 |
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 451 ![]() |
Comme ça peut-être :
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : janvier 2003 Messages : 130 ![]() |
Merci mais ca ne marche pas. La solution proposée par _Mac_ provoque une erreur de parsing.
Est ce que sed fonctionne en lui indiquant les codes Hexa des caracteres que l'on veut remplacer ? J'ai essayé avec une syntaxe x10 mais ça ne fonctionne pas |
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 8 743 ![]() |
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
00
|
|
|
#6 | ||
|
Membre du Club
![]() Inscription : janvier 2003 Messages : 130 ![]() |
Ca ne fonctionne pas :
Code :
|
||
|
|
00
|
|
|
#7 |
|
Membre émérite
![]() ![]() Inscription : octobre 2004 Messages : 668 ![]() |
Ce qui en fait revient à faire un tr.
__________________
Software becomes slower faster than hardware becomes faster http://xrenault.developpez.com API C standard (C ANSI ) |
|
|
00
|
|
|
#8 | |
|
Membre du Club
![]() Inscription : janvier 2003 Messages : 130 ![]() |
Citation:
Je veut en fait faire un truc du genre remplacer l'espace par un retour à la ligne uniquement lorsque l'espace est suivi de "MOT" : Donnera : A+ |
|
|
|
00
|
|
|
#9 | |||
|
Membre émérite
![]() ![]() Inscription : octobre 2004 Messages : 668 ![]() |
fic.sed
Citation:
Code :
__________________
Software becomes slower faster than hardware becomes faster http://xrenault.developpez.com API C standard (C ANSI ) |
|||
|
|
00
|
|
|
#10 | |||
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 8 743 ![]() |
Citation:
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|||
|
|
00
|
|
|
#11 | ||
|
Membre du Club
![]() Inscription : janvier 2003 Messages : 130 ![]() |
Salut
@souviron34 : Ca ne fonctionne pas Code :
A+ |
||
|
|
00
|
|
|
#12 | ||||
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 8 743 ![]() |
chez moi ceci fonctionne :
fichier toto;txt Code :
ceci est un texte long qui sera découpé en un mot par ligne Avec j'obtiens : sortie.txt Code :
Si, testé même sur Windows avec cygwin et Linux avec Redhat (via bash) : Code :
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
||||
|
|
00
|
|
|
#13 |
|
Membre émérite
![]() ![]() Inscription : octobre 2004 Messages : 668 ![]() |
@ Souviron : j'ai testé ta solution sous un linux avec bash pour voir : effectivement ça fonctionne. Mais sous OS X avec bash, non.
__________________
Software becomes slower faster than hardware becomes faster http://xrenault.developpez.com API C standard (C ANSI ) |
|
|
00
|
|
|
#14 |
|
Membre du Club
![]() Inscription : janvier 2003 Messages : 130 ![]() |
Je suis sous KSH (AIX) et ça ne fonctionne pas. Ca doit etre une vieille version de sed
|
|
|
00
|
|
|
#15 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 8 743 ![]() |
il y a 2 possibilités de différence : ou c'est le shell ou c'est le sed.
a) Regarder la doc de sed sur le système en question et voir. b) Regarder la doc du shell utilisé et voir J'aurais tendance à dire que c'est le shell, qui doit interprétrer le \n pour autre chose (à moins que Pouic ait essayé avec ksh aussi) en écrivant ça.. Bon sang mais c'est bien sûr.... Comme le montre ta sortie d'ailleurs.... C'est le caractère \ ... Je ne sais plus si il faut le doubler \\ ou le mettre entre quote pour qu'il reste avec les shells style ksh... Trouve ce qu'il faut pour que le shell n'interprête pas le \ et essaye et ça devrait marcher
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
00
|
|
|
#16 | |
|
Membre émérite
![]() ![]() Inscription : octobre 2004 Messages : 668 ![]() |
Citation:
Je pense que le problème vient du fait que sous Linux, en général, c'est GNU Sed qui est installé, alors que sous *BSD, AIX, et compagnie, c'est le sed pas GNU qui tourne
__________________
Software becomes slower faster than hardware becomes faster http://xrenault.developpez.com API C standard (C ANSI ) |
|
|
|
00
|
|
|
#17 | |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 8 743 ![]() |
Personellement j'essaierais qund meme ceci :
Citation:
car dans sa sortie il y a bien n entre Test et Test. Donc c'est le / qui a disparu ... Et vu la caractere ( (effectivement sur Linux que ce soit sh ksh csh ou bash ca marche)
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
|
00
|
|
|
#18 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 8 743 ![]() |
compte-tenu de la reponse de frp31 ici , ce serait donc :
Code :
$ echo "ceci est un texte long qui sera coupe" | sed "s+ +\\\n+g"
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com