inserire una riga in un file
Carlo Bertoldi
mcbain a tiscali.it
Lun 31 Ott 2005 15:21:52 UTC
Enrico Colombini ha scritto:
> On Monday 31 October 2005 08:57, Davide Arrigo wrote:
>
>>Ecco appunto.. mi chiedevo se si poteva fare qualche magia con perl, awk e
>>sed (che conosco poco e niente)
>
>
> Con perl sicuramente si puo' fare, ha un'opzione per modificare il file 'in
> place' e se ben ricordo puoi anche agire in base al numero di linea.
> Non chiedermi pero' di scriverti le 2-3 righe di codice perche' in questo
> periodo sono in 'leggero' sovraccarico e ogni volta che prendo in mano il
> perl devo rileggermi la short reference (e' molto simpatico, ma e' un
> linguaggio write-only).
>
> .Erix.
>
>
Sicuramente mi sono perso qualcosa, ma l'unica cosa "in place" che ho
trovato in perl è lo switch -iext da riga di comando che fa si che un
file in input venga rinominato come file.ext e le eventuali stampe
vengano eseguite sul file con il nome originale.
Un possibile programmino perl per fare un inserimento in testa lo vedrei
così:
#!/usr/bin/perl
#File con riga da aggiungere in testa
open(FILEIN, @ARGV[0]) or die("Non riesco ad aprire il file @ARGV[0]: $!");
#File cui aggiungere la riga in testa
open(FILE, "+< @ARGV[1]") or die("Non riesco ad aprire il file @ARGV[1]:
$!");
open(FILETMP, "> @ARGV[2]" ) or die("Non riesco ad aprire il file
@ARGV[2] $!");
while (<FILEIN>) {
print FILETMP $_;
print $_;
}
while (<FILE>) {
print FILETMP $_;
print $_;
}
seek(FILETMP, 0, SEEK_SET);
seek(FILEIN, 0, SEEK_SET);
while (<FILETMP>) {
print FILEIN $_;
}
unlink FILETMP;
e lo richiamerei così:
./inserisci_in_testa.pl prova prova2 `mktemp temp.XXXXXX`
Sicuramente non è un granché come codice, la soluzione solo bash mi
sembra più rapida, per lo meno in quando a righe di codice scritte :D
Ciao,
Carlo
Maggiori informazioni sulla lista
Lug
|