Lire un ficher de donnees avec awk [Fermé]

hatunat - 28 juin 2006 à 18:55 - Dernière réponse : jipicy 43485 Messages postés jeudi 28 août 2003Date d'inscriptionModérateurStatut 7 novembre 2010 Dernière intervention
- 28 juin 2006 à 20:02
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
Afficher la suite 

2 réponses

lami20j 21513 Messages postés jeudi 4 novembre 2004Date d'inscriptionContributeur sécuritéStatut 8 octobre 2012 Dernière intervention - 28 juin 2006 à 19:40
0
Utile
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
jipicy 43485 Messages postés jeudi 28 août 2003Date d'inscriptionModérateurStatut 7 novembre 2010 Dernière intervention - 28 juin 2006 à 20:02
0
Utile
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]$
;-))