Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
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 06/12/2007, 22h56   #1
Membre Expert
 
damien
Inscription : mars 2005
Messages : 1 680
Détails du profil
Informations personnelles :
Nom : damien
Âge : 27

Informations forums :
Inscription : mars 2005
Messages : 1 680
Points : 1 849
Points : 1 849
Par défaut remplacer par ex 1 par 00001

bonsoir,
je cherche à modifier une valeur numérique (par exemple 1, 12...)
par une valeur incrémentée de 1 mais surtout numérotée sur 5 chiffres
dans ces cas la 1 devient 00001 (puis 00002) et 10 devient 00010 puis 00011 (l'incrémentation peut être traitée avant)

grace à la commande sed
Code :
sed -e "s/\([0-9][0-9]*\)/0000\1/" .video_psp
j'arrive à le faire pour un seul chiffre mais dès l'instant où les chiffres sont plusieurs cela ne marche plus

merci de votre aide
__________________
dam's
dams78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2007, 13h14   #2
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 451
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 451
Points : 7 562
Points : 7 562
Quelle est la structure des données de ton fichier ? Quel shell utilises-tu ?

Si la ligne contient uniquement la valeur numérique à convertir et que tu utilises ksh, cela devrait fonctionner :
Code :
1
2
3
4
5
6
7
8
9
typeset -i _num
typeset -Z5 _val    # Chaîne numérique complétée par des zéros à gauche 
echo "" > _tmpsed   # Initialiser le fichier de commandes sed
sort -n -u monfichier | while read _num
do
    _val=$(( _num++ ))  # Incrémente et convertir en chaîne 
    echo "s:${_num}:${_val}:g" >> _tmpsed   # Ligne de commande sed suivante
done
sed  -f _tmpsed monfichier
(A vérifier quand même )
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours 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
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2007, 15h02   #3
Invité de passage
 
Inscription : septembre 2004
Messages : 10
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 10
Points : 2
Points : 2
Bonjour

Uiquement pour le format sur n caracteres

Avec un petit awk

echo 10 | awk '{printf "%05d\n",$1}'
10 -> 00010

echo 1 | awk '{printf "%05d\n",$1}'
1 -> 00001

echo <variable à formatter> | awk '{ printf "%0<nombre de zero>d\n,$1 }'
tyvix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2007, 19h46   #4
Membre Expert
 
damien
Inscription : mars 2005
Messages : 1 680
Détails du profil
Informations personnelles :
Nom : damien
Âge : 27

Informations forums :
Inscription : mars 2005
Messages : 1 680
Points : 1 849
Points : 1 849
merci ca marche
__________________
dam's
dams78 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 +2. Il est actuellement 16h27.


 
 
 
 
Partenaires

Hébergement Web