[shell] respecter la casse d'une commande sed
Résolu/Fermé
sdrogba
Messages postés
67
Date d'inscription
mercredi 18 août 2010
Statut
Membre
Dernière intervention
3 novembre 2016
-
4 juil. 2012 à 15:04
sdrogba Messages postés 67 Date d'inscription mercredi 18 août 2010 Statut Membre Dernière intervention 3 novembre 2016 - 4 juil. 2012 à 16:17
sdrogba Messages postés 67 Date d'inscription mercredi 18 août 2010 Statut Membre Dernière intervention 3 novembre 2016 - 4 juil. 2012 à 16:17
A voir également:
- [shell] respecter la casse d'une commande sed
- Garantie fnac écran cassé - Forum Mobile
- Dalle tv samsung cassé - Forum TV & Vidéo
- Rachat tv cassé - Forum Téléviseurs
- Prise antenne derriere tv cassé ✓ - Forum Téléviseurs
- Lordi région écran cassé - Forum Ecran
3 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 407
4 juil. 2012 à 15:18
4 juil. 2012 à 15:18
Salut,
Essaye ça :
Essaye ça :
sed 's/\(WHENEVER ERROR CALL \)\(sortie\)/\1prog_\L\2/Ig'
sdrogba
Messages postés
67
Date d'inscription
mercredi 18 août 2010
Statut
Membre
Dernière intervention
3 novembre 2016
4 juil. 2012 à 15:26
4 juil. 2012 à 15:26
tout d'abord merci pour ta réponse.
Elle fonctionne à merveille au niveau de la casse, c'est magique par contre pour les espaces entre chaque mots cela ne fonctionne pas...
Enfin pourrait tu m'expliquer ce que
sed 's/\(WHENEVER ERROR CALL \)\(sortie\)/\1prog_\L\2/Ig'
veut dire exactement, enfin découpé pour que je comprenne stp
Elle fonctionne à merveille au niveau de la casse, c'est magique par contre pour les espaces entre chaque mots cela ne fonctionne pas...
Enfin pourrait tu m'expliquer ce que
sed 's/\(WHENEVER ERROR CALL \)\(sortie\)/\1prog_\L\2/Ig'
veut dire exactement, enfin découpé pour que je comprenne stp
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 407
4 juil. 2012 à 15:36
4 juil. 2012 à 15:36
par contre pour les espaces entre chaque mots cela ne fonctionne pas...
Euh... c'est à dire ? Dans ton exemple il n'y a rien concernant les espaces ;-\
Pour la syntaxe :
\(...\)
Permet de définir des sous-expressions. Chaque sous-expression étant référencée par la suite par son ordre d'apparition sur le ligne (9 au maximum).
Donc le "\1" correspond à /\(WHENEVER ERROR CALL \)
Et le \2 à \(sortie\)
I
En fin d'expression (juste avant le "g"), permet de traiter les motifs sans tenir compte de la casse.
\L
Permet de passer en minuscule tout ce qui se trouve après lui dans la partie droite de la substitution.
Donc comme c'est le "\2" (qui correspond à sortie) qui est derrière, sera passé en minuscule.
Voir la FAQ sur SED pour plus d'explications.
Euh... c'est à dire ? Dans ton exemple il n'y a rien concernant les espaces ;-\
Pour la syntaxe :
\(...\)
Permet de définir des sous-expressions. Chaque sous-expression étant référencée par la suite par son ordre d'apparition sur le ligne (9 au maximum).
Donc le "\1" correspond à /\(WHENEVER ERROR CALL \)
Et le \2 à \(sortie\)
I
En fin d'expression (juste avant le "g"), permet de traiter les motifs sans tenir compte de la casse.
\L
Permet de passer en minuscule tout ce qui se trouve après lui dans la partie droite de la substitution.
Donc comme c'est le "\2" (qui correspond à sortie) qui est derrière, sera passé en minuscule.
Voir la FAQ sur SED pour plus d'explications.
sdrogba
Messages postés
67
Date d'inscription
mercredi 18 août 2010
Statut
Membre
Dernière intervention
3 novembre 2016
4 juil. 2012 à 15:45
4 juil. 2012 à 15:45
Ok merci pour ses explications.
Pour les espaces :
Normalement il n'y a qu'un espace entre chaque mot hélas il se peut qu'il y en ai plusieurs de temps en temps dans mes fichiers donc je voudrais faire en sorte que si il y a un espace entre chaque mot c'est cool mais si il y a deux espaces (voir plus) entre chaque mot qu'il remplace quand meme par un seul espace.
Pas facile a expliqué donc exemple
WHENEVER ERROR CALL SORTIE doit donné
WHENEVER ERROR CALL prog_sortie
Pour les espaces :
Normalement il n'y a qu'un espace entre chaque mot hélas il se peut qu'il y en ai plusieurs de temps en temps dans mes fichiers donc je voudrais faire en sorte que si il y a un espace entre chaque mot c'est cool mais si il y a deux espaces (voir plus) entre chaque mot qu'il remplace quand meme par un seul espace.
Pas facile a expliqué donc exemple
WHENEVER ERROR CALL SORTIE doit donné
WHENEVER ERROR CALL prog_sortie
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 407
4 juil. 2012 à 15:55
4 juil. 2012 à 15:55
$ cat plop WHENEVER ERROR CALL sortie WHENEVER ERROR CALL SORTIE WHENEVER ERROR CALL Sortie $ sed 's/\(WHENEVER \+ERROR \+CALL\) \+\(sortie\)/\1 prog_\L\2/I;s/ \+/ /g' plop WHENEVER ERROR CALL prog_sortie WHENEVER ERROR CALL prog_sortie WHENEVER ERROR CALL prog_sortie $
sdrogba
Messages postés
67
Date d'inscription
mercredi 18 août 2010
Statut
Membre
Dernière intervention
3 novembre 2016
4 juil. 2012 à 16:17
4 juil. 2012 à 16:17
merci