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);



--
Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a listmas...@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4ee8d473.2040...@iclam.191.it

Rispondere a