The UNIX and Linux Forums  


Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
google unix.com



Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
Appende Header e Trailer balzzz UNIX for Dummies Domande & Risposte 2 01-06-2008 08:19 AM
Verifica l'intestazione e il rimorchio di una determinata stringa, e se non trovate, uscita fuori dalla er_ashu UNIX for Dummies Domande & Risposte 2 11-08-2007 09:55 AM
Copia tutti i file con il tempo di bollo e rimuovere intestazione, rimorchio da file ksrams UNIX for Dummies Domande & Risposte 35 07-30-2007 03:15 PM
Conte n. di record nel file di intestazione e senza contare Trailer Records guiguy Shell scripting e di programmazione 2 06-07-2007 01:15 PM
combinazione di due file di testo di input 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 Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 11-17-2008
oordonez oordonez is offline
Utente Registrato
  
 

Iscriviti Data: novembre 2008
Interventi: 2
Unione di file di testo, mentre combinando le molteplici intestazione / rimorchio record in uno ciascuno.

Situazione:
Il nostro sistema attualmente esegue un lavoro (COBOL Program) che genera un file di interfaccia per essere inviati a uno dei nostri fornitori. Poiché questo sistema elabora le informazioni per oltre 100.000 lavoratori / pensionati (e crescente), vorremmo multi-thread di lavoro in gruppi di trattamento al fine di ridurre il suo run-time. Questo funziona bene, però, siamo di fronte a molteplici interfaccia file che devono essere fuse prima di trasferire il venditore.


Alcuni dettagli sui file:
Il file generato è un header e un rimorchio di registrazione, e il rimorchio ha registrare valori pertinenti totale (vale a dire, dipendente contare, approvato registri, ecc.) Non ci sono separatori di campo - si tratta di campi a lunghezza fissa.

Situazione nel dettaglio:
Saremmo lieti di concatenare i file - che è la parte facile. Ciò che rende questo difficile è che abbiamo bisogno di eliminare il record di più di testa e di mantenere solo il primo. Inoltre, abbiamo bisogno di eliminare il più rimorchio record, ma abbiamo bisogno di aggiungere il valore di tutti i totali di ogni rimorchio in un rimorchio di registrazione ti mantenere alla fine.

Come potrebbe essere ipotizzato da adesso, che ho scritto alcuni script UNIX, ma mancano alcune conoscenze relative alla registrazione individuale e la manipolazione del settore all'interno di un file di testo. In particolare, vorrei sapere come posso definire settori specifici, quando ho letto ogni record - sono questi i campi per il rimorchio record ho bisogno di tenere a rotazione sul totale. Inoltre, vorrei sapere come posso eliminare i singoli record.

Qualsiasi aiuto sarà molto apprezzato.
  #2 (permalink)  
Old 11-17-2008
Jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Iscriviti Data: febbraio 2004
Ubicazione: MN
Messaggi: 5.777
Lei non ha fornito informazioni sufficienti per realizzare una corretta script
Abbiamo bisogno di un esempio di riga di un campione di dati online e un campione rimorchio linea.
  #3 (permalink)  
Old 11-17-2008
oordonez oordonez is offline
Utente Registrato
  
 

Iscriviti Data: novembre 2008
Interventi: 2
Esempio di file

Citazione:
Originalmente inviato da Jim McNamara View Post
Lei non ha fornito informazioni sufficienti per realizzare una corretta script
Abbiamo bisogno di un esempio di riga di un campione di dati online e un campione rimorchio linea.
Ci scusiamo per l'inconveniente! Ecco un esempio di file - record incompleto, in quanto sono piuttosto grandi. Ma le informazioni pertinenti sono contenute.


LOTTO 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 DE 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
LOTTO TRAILER 000001150000019908042008

Dettagli sulla Trailer record: il 00000115 è un valore totale (numero di dipendenti), il 00000199 è il totale dei record trattati (dipendenti e familiari a carico). Questi due campi ho bisogno di mantenere una rotazione totale per tutti i file che si fondono.

Il dettaglio registri sono oltre 300 caratteri di larghezza (irrilevante per ciò che dobbiamo fare, ma ho pensato che includono).

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

Iscriviti Data: febbraio 2004
Ubicazione: MN
Messaggi: 5.777
assumendo questo: è un lavoratore dipendente 01E000036841 id e il nome file sono <something>. dat
Codice:
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
Ciò presuppone anche l'ultimo di otto caratteri LOTTO TRAILER sono tutti uguali.
  #5 (permalink)  
Old 11-17-2008
summer_cherry summer_cherry is offline Forum Advisor  
Utente Registrato
  
 

Iscriviti Data: giugno 2007
Ubicazione: Pechino Cina
Messaggi: 1.088
hi sotto perl si può aiutare un po '

d'uso: perl NUM a.pl file1 file2 [qui NUM indicare quante linee saranno intestazione]
Codice:
a:
*****
line 1
line 2
1 2 3 4 5
Codice:
b:
*****
line 3
line 4
9 8 7 6 5
uscita:
Codice:
*****
line 1
line 2
line 3
line 4
10 10 10 10 10
Codice:
$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

Segnalibri

Tag
perl, perl turno, spostamento, spostamento perl

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 02:16 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0