The UNIX and Linux Forums  
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.

Go Back   Les systèmes UNIX et Linux Forums > Top Forums > De programmation et de script Shell
.
google unix.com



De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
Append-tête et Trailer balzzz UNIX pour les nuls Questions et réponses 2 01-06-2008 08:19 AM
Vérification de l'en-tête et de la remorque pour une chaîne de caractères et s'il n'est pas trouvé, sortir de la er_ashu UNIX pour les nuls Questions et réponses 2 11-08-2007 09:55 AM
Copiez tous les fichiers avec l'horodatage et de supprimer tête, une remorque, à partir du fichier ksrams UNIX pour les nuls Questions et réponses 35 07-30-2007 02:15 PM
Comte n ° de documents au dossier, sans compter tête et Trailer Records guiguy De programmation et de script Shell 2 06-07-2007 12:15 PM
la combinaison de deux fichiers texte d'entrée d3ck_tm AIX 6 02-28-2006 11:23 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 11-17-2008
oordonez oordonez is offline
Registered User
  
 

Date d'inscription: novembre 2008
Messages: 2
Fusionner des fichiers texte tout en combinant les multiples header / trailer dossiers en un seul chacun.

Situation:
Notre système exécute actuellement un emploi (COBOL Program) qui génère un fichier d'interface doivent être envoyés à l'un de nos fournisseurs. Parce que ce système traite les informations pour plus de 100.000 employés et les retraités (et plus), nous aimerions le multi-thread d'emplois dans la transformation des groupes afin de réduire son temps d'exécution. Cela marche bien, cependant, nous sommes confrontés à de multiples fichiers d'interface, qui doivent être fusionnées avant le transfert au vendeur.


Quelques détails sur le dossier:
Le fichier généré a une tête et un enregistrement, et l'enregistrement de la valeur totale est pertinent (c'est-à-dire, d'employés, les dossiers approuvés, etc.) Il n'y a pas de séparateurs de champ - ce sont des champs de longueur fixe.

Predicament en détail:
Nous aimerions que de concaténer des fichiers - c'est la partie facile. Qu'est-ce qui rend difficile, c'est ce que nous avons besoin d'éliminer les multiples dossiers de tête et de ne conserver que la première. Aussi, nous avons besoin pour éliminer les enregistrements multiples remorque, mais nous avons besoin d'ajouter de la valeur de tous les totaux de chaque remorque dans un enregistrement de nous maintenir à la fin.

Comme vous avez peut-être penser maintenant, j'ai écrit quelques scripts UNIX, mais il leur manque certains éléments clés des connaissances relatives aux individuelle et des manipulations dans un fichier texte. En particulier, je voudrais savoir comment je peux définir des domaines spécifiques, quand je lis chaque dossier - ce sont les domaines pour la remorque des dossiers dont j'ai besoin pour conserver un total de roulement sur. Aussi, je voudrais savoir comment je peux effacer des dossiers.

Toute aide sera grandement appréciée.
  #2 (permalink)  
Old 11-17-2008
jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: Feb 2004
Lieu: NM
Posts: 5,759
Vous n'avez pas suffisamment d'informations pour créer un bon script
Nous avons besoin d'un exemple de ligne d'en-tête d'un échantillon de données en ligne et un exemple de ligne de la remorque.
  #3 (permalink)  
Old 11-17-2008
oordonez oordonez is offline
Registered User
  
 

Date d'inscription: novembre 2008
Messages: 2
Exemple de dossier

Citation:
Posté par jim McNamara View Post
Vous n'avez pas suffisamment d'informations pour créer un bon script
Nous avons besoin d'un exemple de ligne d'en-tête d'un échantillon de données en ligne et un exemple de ligne de la remorque.
Sorry about that! Voici un exemple de fichier - les dossiers incomplets, car ils sont assez grands. Mais l'information pertinente est contenue.


LOT HEADER PRO 0724200808042008
01E000036841 LEAD05151948F 51498 10012007 YYY
02E000036841 ME 04161988F 10012007
01E000060640 MDGV12251951F 51498 1001200709302008YYY
02E000060640 RD 05061941M 1001200709302008
01E000025850 LDUO06081956F 51498 1001200709302008YYY
02E000025850 ED 10071937M 1001200709302008
01E029009859 DUA05021960F 51498 10012007 YYY
02E029009859 LD 03101989F 10012007
02E029009859 LD 02041997M 10012007
01E034008379 AEUA09181965F 51498 10012007 YYY
02E034008379 NE 11131991F 10012007
02E034008379 RE 01131993F 10012007
02E034008379 EE 09191959M 10012007
01E045005523 EUA02131964M 51498 10012007 YNN
01E046004280 DUA12041947M 51498 10012007 YYY
02E046004280 D 12121953F 10012007
02E046004280 KE 09211986M 10012007
01E048005119 BDUA01301961F 51498 10012007 YNN
01E055002147 LDUA10011964F 51498 10012007 YYY
02E055002147 RD 11121966M 10012007
02E055002147 ND 02131997F 10012007
02E055002147 JD 03111992M 10012007
01E057008796 SEUA12061975F 51498 10012007 YYY
LOT DE TRAILER 000001150000019908042008

Détails sur le Trailer Record: le 00000115 est une valeur totale (nombre de salariés), le 00000199 est le nombre total de dossiers traités (salariés et personnes à charge). Ces deux domaines que je besoin de garder un total de roulement pour l'ensemble des dossiers que nous avons fusionner.

Le détail des dossiers de plus de 300 caractères de large (sans pertinence pour ce que nous devons faire, mais je pensais que je l'inclure).

Merci!
  #4 (permalink)  
Old 11-17-2008
jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: Feb 2004
Lieu: NM
Posts: 5,759
en supposant que cela: 01E000036841 id est un employé et les fichiers sont nommés <something>. dat
Code:
ls *.dat | read header dummy
# save copies of header
head -1 $header > tmp

awk '{ if (index($0, "HEADER") > 0 || index($0, "TRAILER") >0 ) {last= $0; continue}
       arr[$0]++; print $0   }
       END { for (i in arr) 
             {
               empcnt++ 
               lc+=arr[i]
             } 
             print empcnt, lc > "cntfile" }  ' *.dat >> tmp
awk ' { rec=sprintf("%08d%08d", $1 $2)}
         END { printf("BATCH TRAILER %s%s\n", rec, substr(last, length(last)-7) } ' cntfile >> tmp
mv tmp employee.dat
Cela suppose également la dernière des huit caractères LOT TRAILER sont les mêmes.
  #5 (permalink)  
Old 11-17-2008
summer_cherry summer_cherry is offline Forum Advisor  
Registered User
  
 

Date d'inscription: juin 2007
Lieu: Beijing Chine
Posts: 1088
salut ci-dessous perl mai de vous aider un peu

usage: perl a.pl NUM fichier1 fichier2 [NUM indiquer ici le nombre de lignes sera header]
Code:
a:
*****
line 1
line 2
1 2 3 4 5
Code:
b:
*****
line 3
line 4
9 8 7 6 5
sortie:
Code:
*****
line 1
line 2
line 3
line 4
10 10 10 10 10
Code:
$header=shift;
undef $/;
my(@head,@body,@foot);
while($file=shift){
	open FH,"<$file" or die "Can not open file $_";
	my $str=<FH>;
	close FH;
	my @temp=split("\n",$str);		
	for( my $i=0;$i<$header;$i++){
		push @head,$temp[$i] if ($#head<$header-1);
	}
	for(my $j=$header;$j<$#temp;$j++){
		push @body,$temp[$j];
	}
	my @footer = split(" ",$temp[$#temp]);
	for($k=0;$k<=$#footer;$k++){
		$foot[$k]=$foot[$k]+$footer[$k];
	}
}
print join "\n",@head;
print "\n",join "\n",@body;
print "\n",join " ",@foot;
Closed Thread

Bookmarks

Tags
perl, perl changement, déplacement, changement perl

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 06:13 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0