Newsgroup: it.comp.os.linux.software
Titolo: eliminare l'ultima riga da un file di testo

Sapreste indicarmi il programmillo o la procedurina (anche in pseudo codice) per
farlo?
Sto scrivendo uno script Bash e mi serve di levare l'ultima riga da un file di
testo... attenzione!
lo script fa le sue cose, poi ad un certo punto
cat $file | sed 's/^#quit//'
e uno si aspetterebbe che la riga con #quit all'inizio sia stata eliminata... e
invece no... č stata in effetti sostituita con una riga vuota... quindi (e wc -l
lo dimostra) ho sempre una riga in piů del dovuto.. ho proprio bisogno di
eliminarla... suggerimenti?
se non č troppo laborioso, invece di man qualchecosa vorrei *la pappa pronta*...
solo per questa volta dai...
Ciao
Wiz

farlo?
..forse ho capito male, mah ci provo:
cat boh|sed '$d'>boh
Dov'e` l'inghippo?
-- 
Ci sentiamo  |  Remigio Zedda
             |  
remi...@tiscalinet.it
ciao Remigio |                    kernel 2.2.13 su Slack 7.0

 Dov'e` l'inghippo?
Sto fiutando una mia lacuna.... che cos'è $d ?
Wiz

 Dov'e` l'inghippo?
Questo messaggio annulla la mia precedente risposta...
mi sono ricordato... no, cosě cancello tutto fino all'ultima riga....
Wiz



Sei in overload;-)
$ e` l'ultima riga, ovviamente:-) , d e` cancella. Ma l'ho riprovato
ancora adesso. Da riga di comando, pero`. Guarda che ti fai fregare
dallo script;-))


 dallo script;-))
Come mi insegnarono ad Harvard... MINxxA!!! Prima ci ho provato da riga di
comando e nulla.... ora lo inserisco nello script, salvo, faccio partire.....
perfetto!
Grazie Remigio, per la pronta risposta e pure perchč era giusta!
Ciao, un *andante a letto, finalmente* Wiz.
P.S: hai mica una parente Zedda professoressa delle medie a Carbonia (CA) ?

 writes:
WoI> 
WoI> Sapreste indicarmi  il programmillo  o la  procedurina  (anche in
WoI> pseudo codice) per farlo?
WoI> 
qui per qui  non mi  viene in mente   nulla di particolare,  ma se  la
stringa "#quit" è presente *solo* nell'ultima riga puoi usare 
        grep -v "^#quit" file
Ciao
Marco
-- 
Il maresciallo sta ispezionando la caserma.  Vede una cicca per terra e
chiama il carabiniere piu' vicino: "E' tua quella cicca?".  "No, signor
maresciallo, l'avete vista prima voi!".
		-- Da it.hobby.umorismo

 Dov'e` l'inghippo?
Non farlo. Questo ti sovrascrive il file SUBITO PRIMA di iniziare a
leggerlo.
Funzionamento della linea di comando che hai detto:
1) la shell crea una pipe.
2) la shell forka, e ridirge lo stdout del figlio 1 sull'ingresso della pipe
3) la shell forka, e ridirige lo stdin del figlio 2 sull'uscita della pipe
3b) la shell ridirige lo stdout del figlio 2 su "boh" (zzap!)
4a) il figlio 1 fa exec sul programma "cat". Questo apre il file "boh" che
    ha lunghezza 0 per effetto del punto 3b.
4b) il figlio 2 fa exec di sed
5a) il figlio 1 (cat) spedisce EOF e muore
5b) il figlio 2 (sed) vede EOF e quindi compiuto il suo lavoro muore
Risultato netto, ti trovi con un file 'boh' di lunghezza 0.
Se SAI che vuoi cancellare solo l'ultima riga, usa "head".
Se invece devi guardare il contenuto del file, puoi usare csplit o awk, con
qualcosa del tipo:
awk -f scriptfile.awk
dove scriptfile awk e`
/^#quit { exit(); }
{ print $0;}
-- 
  /Kinkie
Se sulla scatola c'e` scritto "Per windows 95 e superiori", dovrebbe
funzionare sotto Linux, vero?

{ print $0;}
E buona notte, awk e` il mio terrore assieme a emacs, 1500 e passa
pagine di solo man:(


 pagine di solo man:(
awk? Naah.
Inoltre di fatto non esiste il man di emacs, solo l'info.


Inoltre di fatto non esiste il man di emacs, solo l'info.
Emacs per il momente ci giro mooolto al largo: l'ho avviato una sola
volta, entrai e piu` non uscii:-(  Pensavo d'avercela fatta ed invece
era in bg e ho dovuto killare il job per chiudere la console:((
Te lo raccomando l'help interno (e anche info), un altro po' e ci
rimanevo prigioniero anche in quello!


 qualcosa del tipo:
Intanto perche' sempre in mezzo 'sto cat!?
E poi scomodare awk? E non capisco head... A meno che tu non
utilizzi una versione particolare: head mostra le prime righe
di un file o i primi bytes, secondo i flags -n o -c quindi per
cancellare da un file l'ultima riga bisogna comunque conoscerne
il numero (magari usando wc -l), poi usare head, reindirizzare
l'output su di un file temporaneo e sovrascriverlo su quello
originale con mv: troppi programmi! Il solito sed va sempre
meglio:
sed -e '$d' < file > file.tmp ; mv file.tmp file
-- 
Bye by Red  |  PCC on a FreeBSD box                  E-mail: 
rw...@mclink.it
            |---------------------------------------------------------------
            |  "I don't care, we don't care"
            |      (Ramones)

 pagine di solo man:(
awk DEVI impararlo, concettualmente e` semplice, richiede forse
un po' di attenzione nella scrittura delle righe (piu` di perl
diciamo) ma ci puoi fare delle cose strabilianti e ultraveloci.
Per emacs non c'e` lo stesso obbligo ;-)
-- 
Bye by Red  |  PCC on a FreeBSD box                  E-mail: 
rw...@mclink.it
            |---------------------------------------------------------------
            |  "Trovo il mio punto G e voglio un'altra stronza rivoluzione
            |   un orgasmo che mi plachi ogni reazione"  (Afterhours)

 rimanevo prigioniero anche in quello!
Richiede di farci la mano, una volta che hai preso confidenza continua a
dominarti, ma almeno ci fai cose interessanti (tipo scrivere testi).


dominarti, ma almeno ci fai cose interessanti (tipo scrivere testi).
Per questi, meglio dei vari TeX?


 sed -e '$d' < file > file.tmp ; mv file.tmp file
E difatti è proprio la soluzione a cui alla fine sono giunto da solo! ;-))))
L'ultima riga semplicemente non la scrivo ( grazie test!!!!) e quando devo usare
sed per modificare un file uso file.tmp ed mv
Ne vedete il risultato su
http://web.tiscalinet.it/penguin_rules/dev/dev_main.html
 scaricando edx...
La riga in questione sta nella funzioncella Build_File (o simile... non mi
ricordo più di preciso :-)
Ciao 
Wiz 
-- 
La probabilità che la tartina cada sul lato non imburrato
è inversamente proporzionale al costo del tappeto

 FINE
$
8)
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)