|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre confirmé
![]() Inscription : avril 2008 Messages : 187 ![]() |
Bonjour,
Voici un exemple de ce que je voudrais faire. C'est un exemple simplifié pour faciliter la compréhension. En réalité "a" "b" et "c" sont plus compliqués. Dans chaque ligne contenant "a" suivi de "b" suivi de "c", je voudrais remplacer le "b" par "B": Code :
Suis-je contraint à faire ceci: Code :
Code :
Comme "a" "b" et "c" sont plutôt longs, la première écriture, étant plus compacte et plus lisible (moins de parenthèses et de backslashes), aurait eu ma préférence... s'il y avait moyen de la faire marcher! Any suggestion ou confirmation? Merci d'avance )jack( |
||||||
|
|
10
|
|
|
#2 | ||||
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 534 ![]() |
aucun intêret d'utiliser la sous-expression dans ce cas.
suffit imaginons que tu veuilles faire un xxxxxxxxxYYYYYYYYyYYYYYzzzzzzzzzzz et convertir le y en Y Code :
Code :
je te conseilles ce site sur sed : http://sed.sourceforge.net/sed1line.txt extrêmement puissant et formateur par l'exemple |
||||
|
|
00
|
|
|
#3 | ||
|
Membre Expert
![]() |
Si c'est dans un script, pourquoi ne pas utiliser des variables ? Ca simplifiera la lecture et la maintenance
Code :
@frp31: ça ne marche pas car a et c peuvent contenir b. Par exemple, a=tatoti, b=to et c=tutote Si tu fais echo tatotitotutote | sed "s/to/TO/g", tu remplaces forcément le to de a et de c par TO ce que ne veut pas faire jack-ft Les références arrières sont uniquement là pour éviter d'écrire un truc comme echo tatotitotutote | sed "s/tatotitotutote/tatotiTOtutote/g" ce qui peut devenir long à lire... alors qu'avec les références, tu peux gagner un peu : echo tatotitotutote | sed "s/\(tatoti\)to\(tutote\)/\1TO\2/g" (bon, c'est useless ici car les 2 font la même longueur, mais si au lieu de tatoti tu as tatotitatotitatotitatotitatotitatotitatotitatotitatotitatoti, ça permet de gagner quelques caractères... mais ça reste illisible, alors qu'avec 2 jolies variables :p |
||
|
|
11
|
|
|
#4 | ||
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Salut,
Et comme ça : Code :
Edit : Remplacement de "\u" par "\U" vu que c'est pour plusieurs caractères et non pour un unique caractère
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
||
|
|
20
|
|
|
#5 | ||||||||
|
Membre Expert
![]() |
Ça, ça ne marche pas si j'ai bien compris le problème
Le problème tel que je l'ai compris : Voici un texte : Code :
du coup, on pourrait faire : Code :
En utilisant des variables: Code :
Sinon, avec perl et les recherches avant/arrières : Code :
Les symboles (?<= ... ) et (?= ... ) indique que le motif doit être respectivement avant et après ce que l'on cherche, mais ne sont pas dans la capture... |
||||||||
|
|
11
|
|
|
#6 | ||||
|
Membre confirmé
![]() Inscription : avril 2008 Messages : 187 ![]() |
Farpaitement!
Et je suis désolé d'avoir utilisé "B" plutôt que "d" car j'ai enduit d'erreur (sic!) ceux qui ont cru à une capitalisation alors que "d" est indépendant de "b" Citation:
Citation:
Je crois que je vais rester avec sed et prendre la solution avec les variables. Merci à tous d'avoir contribué )jack( |
||||
|
|
01
|
|
|
#7 |
|
Membre Expert
![]() |
Je ne crois pas que sed gère les références arrières
|
|
|
11
|
|
|
#8 | ||
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Si si à sa façon
En me servant de ton fichier d'exemple et de tes variables : Code :
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
||
|
|
20
|
|
|
#9 |
|
Membre Expert
![]() |
Je me suis trompé de terme... je voulais parler des assertions arrières/avant
|
|
|
11
|
|
|
#10 | |||
|
Membre confirmé
![]() Inscription : avril 2008 Messages : 187 ![]() |
Citation:
Code :
)jack( |
|||
|
|
10
|
|
|
#11 |
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 534 ![]() |
bien vu cette solution est propre.
|
|
|
00
|
|
|
#12 | |
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Citation:
Ah ben moi je suis bête et discipliné, mais plus bête que discipliné
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
|
|
|
10
|
Copyright © 2000-2012 - www.developpez.com