Mise en forme d'un fichier avec awk/sed

Résolu/Fermé
romzzzz - 30 juil. 2010 à 14:56
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 30 juil. 2010 à 16:04
Bonjour,

je dispose d'un fichier ayant cette forme :

CODE : 1590
CODE : 1590
./spr/el/ampt/src/spr_bras.c
CODE : 1500
CODE : 1510
CODE : 1530
CODE : 1540
CODE : 1550
CODE : 1570
CODE : 1600
CODE : 1620
CODE : 1640
CODE : 1670
CODE : 1675
./spr/el/defr/src/spr_defr_anomat.c
CODE : 2000
CODE : 2010
CODE : 2020
CODE : 2030
CODE : 2040
CODE : 2050
CODE : 2060
./spr/el/gsys/src/spr_gsys_p.c

et je voudrais qu'il soit sous cette forme après traitement :

CODE : 1590 ./spr/el/ampt/src/spr_bras.c
CODE : 1590 ./spr/el/ampt/src/spr_bras.c
./spr/el/ampt/src/spr_bras.c
CODE : 1500 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1510 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1530 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1540 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1550 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1570 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1600 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1620 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1640 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1670 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1675 ./spr/el/defr/src/spr_defr_anomat.c
./spr/el/defr/src/spr_defr_anomat.c
CODE : 2000 ./spr/el/gsys/src/spr_gsys_p.c
CODE : 2010 ./spr/el/gsys/src/spr_gsys_p.c
CODE : 2020 ./spr/el/gsys/src/spr_gsys_p.c
CODE : 2030 ./spr/el/gsys/src/spr_gsys_p.c
CODE : 2040 ./spr/el/gsys/src/spr_gsys_p.c
CODE : 2050 ./spr/el/gsys/src/spr_gsys_p.c
CODE : 2060 ./spr/el/gsys/src/spr_gsys_p.c
./spr/el/gsys/src/spr_gsys_p.c

Quelqu'un pourrait me sortir un tel script parce que mon fichier fait 14017 lignes...
Merci !

A voir également:

2 réponses

dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
30 juil. 2010 à 15:07
hello
$ awk '/CODE/ {n[i++]=$0}; $1 !~ /CODE/ {for(m=0;m<i;m++)print n[m],$0 ; print ; i=0}' fichier
CODE : 1590 ./spr/el/ampt/src/spr_bras.c
CODE : 1590 ./spr/el/ampt/src/spr_bras.c
./spr/el/ampt/src/spr_bras.c
CODE : 1500 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1510 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1530 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1540 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1550 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1570 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1600 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1620 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1640 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1670 ./spr/el/defr/src/spr_defr_anomat.c
CODE : 1675 ./spr/el/defr/src/spr_defr_anomat.c
./spr/el/defr/src/spr_defr_anomat.c
CODE : 2000 ./spr/el/gsys/src/spr_gsys_p.c 
CODE : 2010 ./spr/el/gsys/src/spr_gsys_p.c 
CODE : 2020 ./spr/el/gsys/src/spr_gsys_p.c 
CODE : 2030 ./spr/el/gsys/src/spr_gsys_p.c 
CODE : 2040 ./spr/el/gsys/src/spr_gsys_p.c 
CODE : 2050 ./spr/el/gsys/src/spr_gsys_p.c 
CODE : 2060 ./spr/el/gsys/src/spr_gsys_p.c 
./spr/el/gsys/src/spr_gsys_p.c 
$ 
1
OK, c'est parfait ! Je ne pensais pas ca réalisable en une seule ligne !

Merci beaucoup !
0
Au passage tu ne connaitrais pas un bon tutoriel pour apprendre awk ?
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
30 juil. 2010 à 16:04
la bible sed & awk O'Reilly Media
sinon google avec des mots clés comme awk sed exemples
ou la doc.GNU http://www.gnu.org/software/sed/manual/sed.html
http://www.gnu.org/software/gawk/manual/gawk.html
0