The UNIX and Linux Forums  

Go Back   Die UNIX-und Linux-Foren > Top Foren > Shell Programmierung und Scripting
.
Google unix.com



Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier.

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Append Header und Trailer balzzz UNIX for Dummies Questions & Answers 2 01-06-2008 08:19 AM
Überprüfung der Kopf-und Anhänger für eine Zeichenkette, und wenn nicht gefunden, Ausfahrt aus dem er_ashu UNIX for Dummies Questions & Answers 2 11-08-2007 09:55 AM
Kopieren Sie alle Dateien mit Zeitstempel und entfernen Kopf, Anhänger aus der Datei ksrams UNIX for Dummies Questions & Answers 35 07-30-2007 03:15 PM
Nr. Anzahl der Datensätze in Datei ohne Header und Trailer Records guiguy Shell Programmierung und Scripting 2 06-07-2007 01:15 PM
Kombination von zwei Text-Dateien 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 Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 11-17-2008
oordonez oordonez is offline
Registrierte Nutzer
  
 

Join Date: Nov 2008
Beiträge: 2
Merge-Text-Dateien, während die Kombination mehrerer Header / Trailer Datensätze in jeweils einer.

Lage:
Unser System führt derzeit einen Job (COBOL-Programm), das ein Interface-Datei, die an einem unserer Lieferanten. Da dieses System verarbeitet Informationen für mehr als 100.000 Mitarbeiter / Rentner (Tendenz steigend), wir möchten Multi-Thread-Verarbeitung in der Job-Gruppen, um seine Laufzeit. Dies funktioniert gut, jedoch sind wir mit mehreren Interface-Dateien, die zusammengeführt werden vor der Übertragung an den Anbieter.


Einige Details über die Datei:
Die Datei hat einen Kopf und einem Anhänger mit einer Aufnahme, und die Anhänger Datensatz entsprechenden Werte insgesamt (dh Arbeitnehmer zählen, Aufzeichnungen zugelassen, etc.). Es gibt keine Feld-Separatoren - das sind feste Länge Felder aus.

Predicament im Detail:
Wir möchten Zusammenfügen der Dateien - das ist der einfache Teil. Was macht diese schwierig ist, die wir brauchen, um die mehrere Header-Einträge und behält nur die erste. Auch wir brauchen, um die Anhänger mehrere Einträge, aber wir brauchen, um alle den Wert Summen von jedem Anhänger in der Anhänger-Datensatz wir behalten am Ende.

Wie Sie vielleicht ahnen nun, ich habe einige UNIX-Skripte, doch einige wichtige Erkenntnisse in Bezug auf individuelle und Manipulation Bereich innerhalb einer Textdatei. Insbesondere würde ich gerne wissen, wie kann ich bestimmte Felder, wenn ich lese jeden Datensatz - das sind die Felder für die Anhänger Aufzeichnungen Ich brauche, um einen fortlaufenden insgesamt auf. Also, ich würde gerne wissen, wie kann ich Löschen einzelner Datensätze.

Jede Hilfe wird sehr geschätzt.
  #2 (permalink)  
Old 11-17-2008
Jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: Feb 2004
Ort: NM
Posts: 5770
Sie haben nicht genügend Informationen, um eine korrekte Skript
Wir brauchen eine Probe Kopfzeile einer Stichprobe Daten und eine Probe Trailer online.
  #3 (permalink)  
Old 11-17-2008
oordonez oordonez is offline
Registrierte Nutzer
  
 

Join Date: Nov 2008
Beiträge: 2
Beispiel-Datei

Zitat:
Zitat von Jim McNamara View Post
Sie haben nicht genügend Informationen, um eine korrekte Skript
Wir brauchen eine Probe Kopfzeile einer Stichprobe Daten und eine Probe Trailer online.
Sorry about that! Hier ist ein Beispiel-Datei - unvollständige Sätze, obwohl, wie sie sind ziemlich groß. Aber die entsprechenden Informationen enthalten ist.


CHARGENFREIGABE 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
CHARGENFREIGABE TRAILER 000001150000019908042008

Details zu den Trailer Record: 00000115 ist der Gesamtwert (Anzahl der Mitarbeiter), die 00000199 ist die Summe der Datensätze verarbeitet werden (Mitarbeiter und Angehörige). Diese beiden Bereiche würde ich brauchen, um einen fortlaufenden insgesamt für alle Dateien zusammenführen.

Die Details werden über 300 Zeichen breit (irrelevant für das, was wir tun müssen, aber ich dachte, es).

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

Join Date: Feb 2004
Ort: NM
Posts: 5770
Angenommen, die: 01E000036841 ist ein Mitarbeiter-ID und die Dateien namens <irgendwas>. 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
Dies geht auch davon die letzten acht Zeichen der CHARGENBEZEICHNUNG TRAILER sind alle gleich.
  #5 (permalink)  
Old 11-17-2008
summer_cherry summer_cherry is offline Forum Advisor  
Registrierte Nutzer
  
 

Join Date: Jun 2007
Ort: Peking, China
Posts: 1088
hi unten perl können Sie ein wenig

Nutzung: perl a.pl NUM datei1 datei2 [NUM hier angeben, wie viele Zeilen werden header]
Code:
a:
*****
line 1
line 2
1 2 3 4 5
Code:
b:
*****
line 3
line 4
9 8 7 6 5
Ausgang:
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

Lesezeichen

Tags
perl, perl Verschiebung, Schicht, Verlagerung perl

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 07:34 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0