Rechercher : dans
Par :

[shell unix] utilisation de cat

Dernière réponse le 17 oct 2007 à 10:38:33 jebok, le 29 jui 2005 à 14:39:24 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [shell unix] utilisation de cat » dans :
Guide d'utilisation du Shell pour débutant VoirSHELL BASH - GUIDE D'UTILISATION - Niveau Débutant Introduction Appel aux membres CCM II. C'est quoi le shell ? III. Comment accéder à la ligne de commande IV. Les consoles virtuelles Exemple : Accéder à la console 3 depuis l'interface...
Sed - Introduction à SED - Part II VoirSED - The Stream EDitor - Part II Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED"...
Utilisation des sémaphores Système V VoirIntroduction Il n'est pas forcément facile de trouver un mode d'emploi clair des sémaphores System V, surtout en français. Cette astuce ne se veut pas exhaustive, mais on va quand même essayer de débroussailler un peu le chemin et clouer quelques...
Télécharger CygWin VoirCygwin est un environnement UNIX pour Windows composé: d'un shell Unix d'une librairie dynamique (DLL) chargée de fournir une couche d'émulation Unix pour le système Windows d'un ensemble de librairies, sources et exécutables adaptés à Cygwin...
Systèmes UNIX - Le shell VoirIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire entre le système...
Commandes UNIX VoirTableau des principales commandes UNIX Commande Unix Description Options ls liste le contenu d'un répertoire -a Affiche tous les fichiers, y compris les fichiers cachés ...
Utilisation de la commande ftp VoirLe protocole FTP FTP (File Transfer Protocol) est un protocole, c'est-à-dire un langage standard de communication entre deux machines, permettant à des machines de types différents (ou dont le système d'exploitation est différent) de transférer des...

1

kilian, le 29 jui 2005 à 14:57:24

Salut,

Il te faudra un petit coup de pouce de awk:
http://lea-linux.org/dev/awk.html

Répondre à kilian

2

lami20j, le 29 jui 2005 à 20:27:26

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.

Répondre à lami20j

3

jipicy, le 29 jui 2005 à 23:09:35

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
;-)) Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. 

Répondre à jipicy

4

man c, le 17 oct 2007 à 10:09:05

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

Répondre à man c

5

 jisisv, le 17 oct 2007 à 10:38:33

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)

Répondre à jisisv
Collection CommentÇaMarche.net