Re: OT: Script per elaborare un file di testo
Il 14/12/2011 16.14, pac ha scritto:
Un'azienda mi dovrebbe mandare un file di testo con una lunga serie di
campi tutti a larghezza fissa e predeterminata, dovrei importarlo poi
in OpenOffice per riordinarlo etc etc
I campi non divisi da alcun separatore di campo.
Domandavo quindi se qualcuno mi poteva aiutare a fare uno script in
cui si mette ";" nella posizione 16 poi nella 66, 116 e così via senza
bisogno di fare in cobol un programmino che legge il file in input e
ne crea una copia in output con relativi separatori di campo.
Grazie comunque
io uso un'utility in perl per mettere i separatori
ciao
Beppe
#!/usr/bin/perl -w
# $file_in nome file in lettura
# $flusso_in handle in lettura
# $file_out nome file in scittura
# $flusso_out handle in scrittura
# $riga riga letta dal file
$file_in = "\/cmd\/list\/file_dati";
$file_out = "\/cmd\/list\/file_dati.csv";
$flusso_in = "IN";
$flusso_out = "OUT";
$riga = "";
$temp = "";
# print ( "File in Lettura: $file_in\n, File in Scrittura: $file_out\n" );
open ($flusso_in, "< $file_in") or die "impossibile aprire: $file_in\n";
open ($flusso_out, "> $file_out") or die "impossibile aprire: $file_out\n";
# legge dal file $file_in e scrive in $file_out
# legge ogni riga ed inserisce ; per creare un file csv
# alla fine del $file_in chiude entrambi i files
# attenzione la prima colonna e' = 0
while ($riga = <$flusso_in>) {
if ( length ($riga) > 130 ) {
$temp = join (';',
join('.',
substr ($riga, 0, 14),
substr ( $riga, 15, 64),
substr ( $riga, 65, xx),
substr ( $riga, xx, xx),
substr ( $riga, xx, xx),
substr ( $riga, xx, xx),
substr ( $riga, xx, x),
"\r"
);
# print $flusso_out length ($riga);
print $flusso_out "$temp\n";
}
}
close ($flusso_in);
close ($flusso_out);
Reply to: