Lire un ficher de donnees avec awk

hatunat -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
bonjour,
je voudrais lire un fichier texte avec des donnees en 2 colonnes et diriger la sortie vers un autre fichier en inversant l'ordre des colonnes avec un script shell et/ou awk.
exp
fic1
NOM PRENOM

puis resultat fic2
PRENOM NOM

merci de votre aide

2 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    voilà en ligne de commande avec perl

    J'ai pris comme séparateur l'espace (un espace pour être exact). Donc q'il y a 2 prénoms sans espace ça ne marche pas.
    lami20j@debian:~$ cat ccm_nom_prenom
    Nom Prenom
    AAA Bbb
    BBB Ccc
    lami20j@debian:~$ cat ccm_nom_prenom | perl -ne 'print join (" ",reverse split " ",$_), "\n"' > ccm_prenom_nom
    lami20j@debian:~$ cat ccm_prenom_nom
    Prenom Nom
    Bbb AAA
    Ccc BBB
    lami20j@debian:~$
    
    ou
    lami20j@debian:~$ cat ccm_nom_prenom
    Nom Prenom
    AAA Bbb
    BBB Ccc
    lami20j@debian:~$ cat ccm_nom_prenom | perl -ne 's/(\w+)\s(\w+)/$2 $1/ and print' > ccm_prenom_nom
    lami20j@debian:~$ cat ccm_prenom_nom
    Prenom Nom
    Bbb AAA
    Ccc BBB
    lami20j@debian:~$
    
    lami20j
    0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Avec "awk" ça donne ça :
    [jp@MDK tmpfs]$ cat fich.txt
    Dupont Jean
    Dupuit Albert
    Dubois Isabelle
    
    [jp@MDK tmpfs]$ while read i; do echo $i | awk '{ print $2,$1 }' >> fich2.txt; done <fich.txt
    
    [jp@MDK tmpfs]$ cat fich2.txt
    Jean Dupont
    Albert Dupuit
    Isabelle Dubois
    
    [jp@MDK tmpfs]$
    ;-))
    0