Précédent   Forum des professionnels en informatique > Systèmes > Linux
Linux Forum d'entraide sur le système Linux. Avant de poster -> Tutoriels Linux, F.A.Q Linux
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 19/02/2010, 15h56   #1
Membre habitué
 
Inscription : avril 2009
Messages : 287
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 287
Points : 127
Points : 127
Par défaut [BASH] Découper une chaine de caractères et y insérer des -

Bonjour,


j'ai une chaine: et j'aimerai que ça donne ça:
le top ça serait de découper en fonction de la taille (par exemple, ici 12/x (3))

Auriez vous une idée? en une petite commande?

je vous remercie d'avance
dtcSearch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2010, 16h13   #2
Expert Confirmé
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 1 896
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 1 896
Points : 3 676
Points : 3 676
une idée !
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2010, 16h25   #3
Membre habitué
 
Inscription : avril 2009
Messages : 287
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 287
Points : 127
Points : 127
:2 j'avoue ne pas comprendre sans exemple...

mais merci, je continue à lire
dtcSearch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2010, 16h40   #4
Membre habitué
 
Inscription : avril 2009
Messages : 287
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 287
Points : 127
Points : 127
je sais pas si awk permettrai à l'aide d'un pattern de faire ça?
dtcSearch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2010, 01h35   #5
Membre chevronné
 
Inscription : septembre 2007
Messages : 685
Détails du profil
Informations personnelles :
Âge : 48
Localisation : Suisse

Informations forums :
Inscription : septembre 2007
Messages : 685
Points : 723
Points : 723
Bon, j'ai rien trouvé de transcendant. Si quelqu'un a une meilleure solution...
Code :
1
2
3
4
a=D5F6SF45HBFF
b=$(echo $a | sed 's@\(...\)@\1-@g')
echo ${b%-}
D5F-6SF-45H-BFF
__________________
Un problème bien posé est déjà résolu (H. Bergson).
jmelyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2010, 03h08   #6
Expert Confirmé
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 1 896
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 1 896
Points : 3 676
Points : 3 676
meilleure ? non, en Bash :
Code :
1
2
3
4
5
6
7
8
9
10
11
var=D5F6SF45HBFF

x=0
echo "${var:x:3}-${var:x+=3:3}-${var:x+=3:3}-${var:x+=3:3}"
#soit
echo "${var::3}-${var:3:3}-${var:6:3}-${var:9:3}"
#ou, s'il faut avoir la même souplesse que procure sed
for (( x=0; x<${#var}; x+=3 )); do
   new="${new:+$new-}${var:x:3}"
done
echo $new
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2010, 09h38   #7
Membre chevronné
 
Inscription : septembre 2007
Messages : 685
Détails du profil
Informations personnelles :
Âge : 48
Localisation : Suisse

Informations forums :
Inscription : septembre 2007
Messages : 685
Points : 723
Points : 723
Solution basée sur la troisième de N_BaH, complètement paramétrable. La plus propre à mon avis. Merci N_BaH.
Code :
1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
 
var=1234567890
size=3
sep=-
 
new=${var:0:$size}
for (( i=size; i < ${#var}; i+=size ))
do
  new+=$sep${var:$i:$size}
done
__________________
Un problème bien posé est déjà résolu (H. Bergson).
jmelyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2010, 21h56   #8
Membre confirmé
 
Avatar de SYL666
 
Cédric
Inscription : novembre 2003
Messages : 308
Détails du profil
Informations personnelles :
Nom : Cédric

Informations forums :
Inscription : novembre 2003
Messages : 308
Points : 296
Points : 296
Ca tue ce problème en fait, j'adore!
Il faudrait lancer un concours de one-liners qui résout efficacement ce problème
__________________
The Big Bang theory : In the beginning there was nothing, and it exploded. (Terry Pratchett)

IT Quote : "Unix is user-friendly. It's just very selective about who its friends are."
SYL666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2010, 09h35   #9
Membre habitué
 
Inscription : avril 2009
Messages : 287
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 287
Points : 127
Points : 127
Je vous remercie,

je suis bien comptant de voir que le problème soit une sorte de défie,

personnellement, je savais pas du tout comment faire simplement.

Là j'ai quelques solutions fonctionnelles, je vous remercie.

C'est résolut

Encore merci à tous
dtcSearch est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 18h33.


 
 
 
 
Partenaires

Hébergement Web