Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

triage de fichier

7 réponses
Avatar
yannick.deglin
Bonjour .....

merci a ceux qui m'ont déjà aider ...

là j'avoue que j'ai un vrai bloquage


j'ai un fichier texte du type



TP9999;toto;tata;50;28;toto;tata
TP9998;titi;titi2;50;28;toto;tata
TP9997;toto;tata;50;28;toto;tata
TP9999;lolo;lili;60;38;popo;papa
TP9997;maman;tonton;600;85;lolo;vivi
TP5262;toto;tata;50;28;toto;tata


TPXXXX correspond a une cle unique, or le fichier texte comprends des
doublons ...
mais ces doublons ne sont pas des doublons complets mais juste sur le
premier champ


lorsque je load via sqlldr en direct=true ce fichier dans une table
.... j'ai la fameuse erreur ORA-01502 ... qui rend ma contrainte
Unusable ....
et puisqu'il y a des doublons .. je ne peux pas reconstruire l'index



2 solutions s'offrent a moi:

-passer en false , mais cela rallonge considerablement le temps de
chargement , j'aimerais eviter


- traiter le fichier texte avant de le loader .....

donc comment transformer le fichier texte en virant les enregistrement
dont le premier champ est identique


comment faire pour recréer le fichier et le mettre donc de la forme

TP9999;toto;tata;50;28;toto;tata
TP9998;titi;titi2;50;28;toto;tata
TP9997;toto;tata;50;28;toto;tata
TP5262;toto;tata;50;28;toto;tata


merci beaucoup ....



deuxieme question .../
comment faire marcher pearl sous unix/solaris ???


troisieme question (deja posé mais ca marche pas )
- comment , dans un repertoire donnée , recupérer le fichier dont le
nom commence par toto et qui est le plus récent .....

par exemple
toto_data_YYYYMMDDHHMMSS.txt
toto_data2_YYYYMMDDHHMMSS.txt
toto_data3_YYYYMMDDHHMMSS.txt

je veux recuperer le plus recent.....


Et enfin ....

j'ai un fichier texte qui comprend les données suivantes

payment-method;script01.sh
billing;script02.sh
Topstar;script03.sh


comment , a partir de la valeur billing ... recuperer la valeur
script02.sh




merci beaucoup d'aider un jeune programmeur debutant qui vient de
decouvrir unix et qui plane a 100 mille... :-(

7 réponses

Avatar
drkm
(sleepee) writes:

donc comment transformer le fichier texte en virant les enregistrement
dont le premier champ est identique


Quelque chose comme ceci pourait t'aider. Sans doute te
prosera-t-on un équivalent en AWK, que je ne connais pas assez.

~> cat fcou.pl
#! /usr/bin/perl -w

use strict ;

my %keys = () ;

foreach ( <STDIN> ) {
my $key = substr( $_ , 0 , 6 ) ;
if ( ! $keys{$key} ) {
$keys{$key} = 1 ;
print ;
}
else {
print STDERR ;
}
}

~> cat fcou.data
TP9999;toto;tata;50;28;toto;tata
TP9998;titi;titi2;50;28;toto;tata
TP9997;toto;tata;50;28;toto;tata
TP9999;lolo;lili;60;38;popo;papa
TP9997;maman;tonton;600;85;lolo;vivi
TP5262;toto;tata;50;28;toto;tata

~> perl fcou.pl < fcou > fcou.new
TP9999;lolo;lili;60;38;popo;papa
TP9997;maman;tonton;600;85;lolo;vivi

~> perl fcou.pl < fcou 2> fcou.dbl
TP9999;toto;tata;50;28;toto;tata
TP9998;titi;titi2;50;28;toto;tata
TP9997;toto;tata;50;28;toto;tata
TP5262;toto;tata;50;28;toto;tata

--drkm

Avatar
Jacques L'helgoualc'h
(sleepee) writes:

donc comment transformer le fichier texte en virant les enregistrement
dont le premier champ est identique


Quelque chose comme ceci pourait t'aider. Sans doute te
prosera-t-on un équivalent en AWK, que je ne connais pas assez.


awk -F';' '!c[$1]++' <fichier >fichier_sans_doublons

gardera les premières lignes contenant chaque clé.
--
Jacques L'helgoualc'h


Avatar
drkm
Jacques L'helgoualc'h <lhh+ writes:


Quelque chose comme ceci pourait t'aider. Sans doute te
prosera-t-on un équivalent en AWK, que je ne connais pas assez.


awk -F';' '!c[$1]++' <fichier >fichier_sans_doublons

gardera les premières lignes contenant chaque clé.


Je me disais bien qu'AWK devait proposer plus simple. Édifiant ;-).

--drkm


Avatar
Jacques L'helgoualc'h
Jacques L'helgoualc'h <lhh+ writes:
[...]

awk -F';' '!c[$1]++' <fichier >fichier_sans_doublons

gardera les premières lignes contenant chaque clé.


Je me disais bien qu'AWK devait proposer plus simple. Édifiant ;-).


s/simple/concis/ ; il y manque aussi ta sortie sur stderr des doublons.
--
Jacques L'helgoualc'h


Avatar
John Mackerel
sleepee wrote:

donc comment transformer le fichier texte en virant les enregistrement
dont le premier champ est identique



#!/usr/bin/awk -f
BEGIN {
FS=";";
}

{
if (dejavu[$1] == "y")
print $1 " deja vu";
else
print $1 " nouveau";
dejavu[$1] = "y";
}


- comment , dans un repertoire donnée , recupérer le fichier dont le
nom commence par toto et qui est le plus récent .....


ls -rt toto* | tail -1


Avatar
Isidore Ducasse
Jacques L'helgoualc'h wrote:
awk -F';' '!c[$1]++' <fichier >fichier_sans_doublons



joli!

mais s/F/FS

Avatar
Jacques L'helgoualc'h
Dans l'article <41cb1afb$0$31493$,
Jacques L'helgoualc'h wrote:
awk -F';' '!c[$1]++' <fichier >fichier_sans_doublons


joli!

mais s/F/FS


? -F';' est équivalent à -v FS=';' ou BEGIN{FS=";"}, sans parler du
--field-separator ';' de gawk.
--
Jacques L'helgoualc'h