Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Linux > Applications > Shell

Shell Vos questions sur l'utilisation des commandes shell

Réponse
 
Outils de la discussion
Vieux 14/08/2008, 17h09   #1 (permalink)
Invité de passage
 
Date d'inscription: août 2008
Localisation: Evreux
Messages: 6
Par défaut Extraction pour controle

Bonjour,

Je reçois des fichiers à plats (txt) contenant des infos qui peuvent sembler redondantes
J'ai besoins d'extraire une seule partie du fichier par colonne
une fois effectué je souhaite faire un contrôle d'exhaustivité concernant cette fameuse colonne

Extrait du fichier
Code :
"20080809";"20080804";"20080808";"000";"EXTERNE";"ED    ";"TP ";"1S";          8; 00000,00; 00000; 00000                                             
"20080809";"20080804";"20080808";"000";"EXTERNE";"ED    ";"TP ";"1S";          9; 00000,00; 00000; 00000                                             
"20080809";"20080804";"20080808";"000";"EXTERNE";"ED    ";"TP ";"1S";         10; 00000,00; 00000; 00000                                             
"20080809";"20080804";"20080808";"000";"EXTERNE";"ED    ";"TP ";"2F";          1; 00000,00; 00000; 00000                                             
"20080809";"20080804";"20080808";"000";"EXTERNE";"ED    ";"TP ";"2F";          2; 00000,00; 00000; 00000                                             
"20080809";"20080804";"20080808";"000";"EXTERNE";"ED    ";"TP ";"2F";          3; 00000,00; 00000; 00000                                             
"20080809";"20080804";"20080808";"000";"EXTERNE";"ED    ";"TP ";"2F";          4; 00000,00; 00000; 00000                                             
"20080809";"20080804";"20080808";"000";"EXTERNE";"ED    ";"TP ";"2F";          5; 00000,00; 00000; 00000
J'ai essayé avec awk mais j'ai un soucis de "" et de séparateur ';'
et puis je ne maitrise pas trop ce genre de programmation


En gros je souhaiterais pouvoir ressortir les valeur en 8ieme colonne et de les affiché en distinct (c'est a dire que si j'ai 10 fois 2F, il ne m'en affiche qu'un et le mieux si possible à coté son nombre)
Citation:
2F 10

je vous remercie par avance à tous de l'aide que vous m'apporterez !
le_campeur est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/08/2008, 21h01   #2 (permalink)
Membre éprouvé
 
Avatar de BlaireauOne
 
Date d'inscription: mars 2007
Localisation: Toulouse
Messages: 471
Par défaut

Je te laisse peaufiner le reste

http://www.shellunix.com/awk.html
http://lea-linux.org/cached/index/Dev-awk.html


Script :

Code :
sort -t";" -k8,8 -o test_trie.txt test.txt

cat test_trie.txt

awk -F";" '
BEGIN {
    Precedent=""
}
{
    if ( $8 == Precedent ) {
        incr++
        next
    }
    if ( Precedent != "" ) {
        print Precedent, incr
    }
    Precedent=$8
    incr=1
}
END {
    print Precedent, incr
} '  test_trie.txt
Résultat :

Code :
"2F" 1
"1S" 3
"2F" 4
__________________
Loi de Murphy:
La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 18/08/2008, 08h54   #3 (permalink)
Invité de passage
 
Date d'inscription: août 2008
Localisation: Evreux
Messages: 6
Par défaut

Merci pour ce petit shell !!

Je n'avais pas pensé à utiliser "sort" afin de trier le contenu de mon fichier.

En fait si mais avec excel c'est pas propre tout ca !!

Merci encore ...

je l'adapte à mes besoins exacte.
le_campeur est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 18/08/2008, 15h09   #4 (permalink)
Invité de passage
 
Date d'inscription: août 2008
Localisation: Evreux
Messages: 6
Par défaut

re bonjour

je continue ma demande ...

comme je suis une bille en développement, je sais lire des script les modifier... mais pas les créer !

Je souhaiterais ajouter une conditions sur le nombre de fois que la sélection sort
Code :
"1S" 3
"2F" 4
Ex Si 2F sort plus de 4 alors je ne veux pas d'affichage .

merci encore


******************************************************

j'ai trouvé ma solution :
j'envoi le tout dans un fichier et je traite ce fichier avec un deuxieme awk et sa condiftion ...

voila

Dernière modification par le_campeur ; 18/08/2008 à 16h24
le_campeur est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 18/08/2008, 20h52   #5 (permalink)
Membre éprouvé
 
Avatar de BlaireauOne
 
Date d'inscription: mars 2007
Localisation: Toulouse
Messages: 471
Par défaut

Ça doit le faire
http://www.delorie.com/gnu/docs/gawk/gawk.1.html

Code :
.../...
    if ( Precedent != "" ) {
        if (incr < 5) {
            print Precedent, incr
        }
    }
.../...
__________________
Loi de Murphy:
La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation
NEWS LINUX PROFESSIONNELFAQ LINUXTUTORIELS LINUXLIVRES LINUXLINUX TVUNIXGTK+QtAPACHE

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Linux > Applications > Shell



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide