|
|
|
|
Bonjour,
j'ai un fichier du type :
nom prenom telephone
avec une tabulation entre chaque colonne.
je souhaite faire une commande du type : pour chaque ligne, écrire "nom - prenom : telephone"
Or, quand je fais
for ligne in `cat fichier` do ... done
il considère que chaque élément du tableau est une ligne...
Comment faire ?
merci
Merci de votre aide
Salut,
|
Salut,
perl -p -i -e 's#(\w+)\t(\w+)\t(\d+)#$1 - $2 : $3#g' copie_de_ton_fichier Toujours essaies sur une copie. Comme ça on ne risque pas de detruire le fichier original. J'ai utilisé \d+ puisque je suppose que le format de telephone est de : 0123456789 (donc 10 chiffres). Si autre format il faut le dire. |
Salut,
[jp@Mandrake tmpfs]$ cat fichier.txt nom prenom 0011223344 nom prenom 0011223344 nom prenom 0011223344 nom prenom 0011223344 nom prenom 0011223344Voilà ce que ça donne avec "sed" (la commande "tee" n'est là que pour afficher la sortie à l'écran en même temps qu'elle est envoyée dans un autre fichier "change.txt") : [jp@Mandrake tmpfs]$ sed -e 's/\t/-/' -e 's/\t/ : /' < fichier.txt | tee change.txt nom-prenom : 0011223344 nom-prenom : 0011223344 nom-prenom : 0011223344 nom-prenom : 0011223344 nom-prenom : 0011223344Et avec "awk" : [jp@Mandrake tmpfs]$ cat fichier.txt | awk '{ print $1"-"$2" : "$3 }' | tee change.txt
nom-prenom : 0011223344
nom-prenom : 0011223344
nom-prenom : 0011223344
nom-prenom : 0011223344
nom-prenom : 0011223344;-))
Z'@+...che.JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
Une piste avec awk :
johand@osiris ~
$ cat tel.txt
Dupont Michel 012345
de Ghelderode Michel 987654
Du Pont de Nemour Arthur 666666
johand@osiris ~
$ awk 'BEGIN{FS="\t"}{printf "%s-%s:%s\n", $1,$2,$3 }' < tel.txt
-:
Dupont-Michel:012345
de Ghelderode-Michel:987654
Du Pont de Nemour-Arthur:666666
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin) |