[shell unix] utilisation de cat

Résolu
jebok Messages postés 371 Date d'inscription   Statut Membre -  
jisisv Messages postés 3678 Statut Modérateur -
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

5 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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.
    0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
    ;-))
    0
  3. man c
     
    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
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. jisisv Messages postés 3678 Statut Modérateur 936
     
    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
    
    
    0