|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2008 Messages : 4 ![]() |
Bonjour à tous,
J'ai plusieurs fichiers (environ 15) qui contiennent tous des lignes de ce type: NOM| PRENOM|AGE|SEXE|TELEPHONE|VILLE ce que je voudrai c'est que à partir de tous ces fichiers j'en crée des nouveaux (1 fichier par AGE) contenant uniquement le NOM| PRENOM. Ex: TITI|TOTO|15|M||PARIS (contenu dans un fichier PARIS.txt) TITI2|TOTO2|17|M||Lyon(contenu dans un fichier Lyon.txt) TITI3|TOTO3|18|M||PARIS (contenu dans un fichier PARIS.txt) TITI4|TOTO|15|M||Lille(contenu dans un fichier Lille.txt) Ainsi je souhaite avoir 1 fichier : 15Ans.txt contenant : TITI|TOTO TITI4|TOTO 1 fichier : 17Ans.txt contenant : TITI2|TOTO2 1 fichier : 18Ans.txt contenant : TITI3|TOTO3 Est ce que selon vous c'est possible ? Thomas |
|
|
10
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Salut,
Code :
awk -F'|' 'BEGIN {OFS="|"}{ print $1,$2 >> $3"Ans.txt" }' fichiers*
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
|
|
50
|
|
|
#3 | ||
|
Membre Expert
![]() |
Salut,
en sed/awk, je ne sais pas, mais en perl, ça se fait bien : Code :
|
||
|
|
11
|
|
|
#4 | |
|
Invité de passage
![]() Inscription : janvier 2008 Messages : 4 ![]() |
Citation:
Exemple: TITI4|TOTO|15|M||Lille(contenu dans un fichier Lille.txt) TITI4|TOTO|15|M||Lille(contenu dans un fichier Lille.txt) TITI4|TOTO|15|M||Lille(contenu dans un fichier Lille.txt) TITI5|TOTO5|15|M||Lille(contenu dans un fichier Lille.txt) Ainsi je souhaite avoir 1 fichier : 15Ans.txt contenant : TITI4|TOTO TITI5|TOTO5 |
|
|
|
10
|
|
|
#5 | |
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Citation:
Peut être serait-il plus approprié d'épurer le fichier par la suite (avec sort)... non ?
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
|
|
|
10
|
|
|
#6 |
|
Invité de passage
![]() Inscription : janvier 2008 Messages : 4 ![]() |
Effectivement j'ajoute les lignes au fur et à mesure.
Par contre je sais pas trop si trier serait une solution. Je pense que je vais essayer avec un grep. |
|
|
01
|
|
|
#7 | |||
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Citation:
Code :
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
|||
|
|
20
|
|
|
#8 |
|
Membre Expert
![]() |
|
|
|
20
|
|
|
#9 | ||
|
Invité de passage
![]() Inscription : janvier 2008 Messages : 4 ![]() |
Ah ok comme ça je peux faire un :
Code :
|
||
|
|
01
|
|
|
#10 | ||
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Il y a peut être moyen de faire ça directement avec "awk" mais comme ce n'est pas mon fort...
Sinon concernant ta boucle : Code :
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
||
|
|
30
|
|
|
#11 | ||
|
Membre Expert
![]() |
Je conseillerais plutôt de faire un fichier temporaire en sortie de Awk et de faire le sort vers le fichier définitif, ça évite de se prendre la tête
Pour le fun, en perl: Code perl :
|
||
|
|
11
|
|
|
#12 | ||||
|
Membre éclairé
![]() Inscription : février 2011 Messages : 83 ![]() |
Aucunement besoin de fichier temporaire avec awk.
Code :
Code :
__________________
Neon Suite by FRUiT (kde4.6) http://tinyurl.com/yzm7cee "Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley) clean |
||||
|
|
40
|
|
|
#13 |
|
Membre Expert
![]() |
Intéressant, tu es certain qu'il n'y a aucun risque que awk ou sort ne se mélange les pinceaux avec ce genre de technique ?!
Je n'avais jamais fait gaffe à l'option -o dans sort, mais du coup, est-ce qu'un sort -u test.t -o test.t ne pourrait pas marcher également ?! Edit: ah ouais, selon ce site, ça marche... cool
|
|
|
10
|
|
|
#14 |
|
Membre éclairé
![]() Inscription : février 2011 Messages : 83 ![]() |
Pour awk, à mon avis tout dépend de la complexité du script appliqué, ce n'est peut-être pas toujours faisable ainsi.
Pour sort, a priori je vois pas de restrictions particulières. Intéressant ce lien, je garde dans mes tablettes merci ^^
__________________
Neon Suite by FRUiT (kde4.6) http://tinyurl.com/yzm7cee "Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley) clean |
|
|
10
|
|
|
#15 | ||||
|
Membre Expert
![]() |
Je ne sais pas si quelqu'un va lire ceci, mais je suis tombé sur un autre forum sur un sujet ou quelqu'un cherchait à utiliser awk pour modifier un fichier sur lui-même.
Il a utilisé un truc comme cela : Code :
Citation:
Citation:
|
||||
|
|
10
|
|
|
#16 |
|
Membre éclairé
![]() Inscription : février 2011 Messages : 83 ![]() |
Ca me parait quand même un tout petit peu moins élégant que FILENAME, mais c'est intéressant quand même, je note je note ^^
__________________
Neon Suite by FRUiT (kde4.6) http://tinyurl.com/yzm7cee "Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley) clean |
|
|
10
|
|
|
#17 |
|
Membre Expert
![]() |
Moins élégant, ça dépend, mais l'utilisation de la redirection dans awk me fait un peu hésiter perso !
Je trouve que ça ressemble un peu trop à de la redirection shell en terme de présentation, et j'ai peur d'avoir les mêmes problèmes ! Même si je pense que ça n'est pas le cas (comme si tu faisais un sort -u test.t > test.t en fait, ce que tout le monde a fait au début et qui ne marche pas du tout ... alors que { rm test.t && sort -u > test.t; } < test.t passe bien lui... même si l'option -o permet d'éviter le désagrément Bref, j'aime bien la technique |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com