Syntaxe commande sed avancée
julien
-
julien -
julien -
Bonjour à tous,
je souhaiterait substituer des caractères de façon a faire (mettons que j'ai une variable avec des plein de chiffres) de 1 à 5 remplaçer par a, de 7 à 8, remplacer par b,ect.. j'ai vu la commande sed qui n'a pas l'air mal mais j'arrive pas a saisir la syntaxe pour arriver a ce résultat. avez vous une solution? merci d'avance.
je souhaiterait substituer des caractères de façon a faire (mettons que j'ai une variable avec des plein de chiffres) de 1 à 5 remplaçer par a, de 7 à 8, remplacer par b,ect.. j'ai vu la commande sed qui n'a pas l'air mal mais j'arrive pas a saisir la syntaxe pour arriver a ce résultat. avez vous une solution? merci d'avance.
A voir également:
- Syntaxe commande sed avancée
- Invite de commande - Guide
- Commande terminal mac - Guide
- Commande dism - Guide
- Commande scannow - Guide
- Diskpart commande - Guide
7 réponses
ben par exemple j'ai des truc comme /251,/252,/253 et je veux remplacer par exemple /251 et 252 par a et /253 par b, le tout en une ligne, parceque j'ai beaucoup de chiffres, (c'est des caractères spéciaux en octal) et du coup je peux pas faire le sed äàéèëê/aaeeee
c'est sur que ç'est bien prise de tête. j'ai chopé un mal de tête hier je vous raconte pas. enfin dubcek merci infiniment ta réponse m'avance bien. ce qui serait parfait c'est si on pouvait écrire de 1 à 5, remplacer par a, sans avoir a tout saisir, (comme dans tr '[a-z]' '[A-Z]' ) car en vrai j'ai des caractères comme /251 , /252, /253 qui peuvent apparaitre aléatoirement (caractère spéciaux norme ISO-8859-1) que je doit remplacer par exemple de /340 à / 345, remplacer par a, de /350 à /353, par e, ect... bon après ta solution reste largement viable, mais bon la ligne qui fait une page ^^ en tout cas merci c'est déja ça.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
merci pour ces réponses rapides, mais malheuresement, j'ai essayé avec la syntaxe de dubcek :
var=$(echo $var | sed "s/[\340\341\342\343\344\345]/a/g;s/[\350\351\352\353]/e/g;")
elle est correcte syntaxiquement mais quand on met tout bah si on tombe sur une valeur (ex: /351) le remplacement ne s'effectue pas.
pour la solution de zipe, plus condensée, j'ai fé ça:
var=$(echo $var | sed "s#34[0-3]#a#g;s#35[0-3]#e#g") et la blague c'est que ça fé pareil, quand on tombe dessus ça ne remplace pas. par contre les /a,/a,/a, /e,/e,/e ne passent pas. j'ai donc fait sans.
var=$(echo $var | sed "s/[\340\341\342\343\344\345]/a/g;s/[\350\351\352\353]/e/g;")
elle est correcte syntaxiquement mais quand on met tout bah si on tombe sur une valeur (ex: /351) le remplacement ne s'effectue pas.
pour la solution de zipe, plus condensée, j'ai fé ça:
var=$(echo $var | sed "s#34[0-3]#a#g;s#35[0-3]#e#g") et la blague c'est que ça fé pareil, quand on tombe dessus ça ne remplace pas. par contre les /a,/a,/a, /e,/e,/e ne passent pas. j'ai donc fait sans.
[a-z] ne fonctionne qu'avec un seul caractère à la fois. moi je fabrique une séquence de ou : (aaa¦bbb¦ccc) aaa ou bbb ou ccc
sed "s/[\340\34 : ceci veut dire ou 3 ou 4 ou 0 etc
sed "s/[\340\34 : ceci veut dire ou 3 ou 4 ou 0 etc