VIVEZ LE
FOOTBALL !

Posez votre question Signaler

[shell unix] utilisation de cat [Résolu]

jebok 371Messages postés 16 mai 2005Date d'inscription - Dernière réponse le 17 oct. 2007 à 10:38
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
Lire la suite 

[shell unix] utilisation de cat »

5 réponses
Réponse
+0
moins plus
Salut,

Il te faudra un petit coup de pouce de awk:
http://lea-linux.org/dev/awk.html
Ajouter un commentaire
Réponse
+0
moins plus
Salut,


Si tu as perl sur ton système tu peux essayer la commande
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.
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

Tu peux aussi regarder du côté de "sed". Seul inconvénient tu devras passer par un fichier temporaire (ou supplémentaire). Remarque qu'avec "awk" aussi.

Donc en partant d'un fichier (fichier.txt) sous cette forme :
[jp@Mandrake tmpfs]$ cat fichier.txt
nom     prenom  0011223344
nom     prenom  0011223344
nom     prenom  0011223344
nom     prenom  0011223344
nom     prenom  0011223344
Voilà 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 : 0011223344
Et 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
;-))
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

int main(argc, **argv)
{

}
tu recupere le nom et le prenom avec des putstr
et tu fait un getnbr du numero de argv[3] comme ca tu le stoque dans un int au lieu que ce soir une chaine de char ^^
.

niveau debutant
Ajouter un commentaire
Réponse
+0
moins plus
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

Ajouter un commentaire
Ce document intitulé « [shell unix] utilisation de cat » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?