2011-12-26 13 views
7

Desidero rimuovere newline \n solo dalla fine del file in unix
ad es.Rimuovi newline dalla fine del file

abc 
def 
ghi 
​ 

uscita dovrebbe essere

abc 
def 
ghi 

Alla fine del file non ci dovrebbe essere una sola \n

+0

awk '{if (NR == 1 && $ 0 ~ /> /) {stampa $ 0; successivo} if ($ 0 ~/^> /) {stampa "\ n" $ 0; successivo} else {printf ("% s" , $ 0)}} 'filename Ho provato lo script precedente ma sta rimuovendo tutto \ n ma voglio che \ n che esiste alla fine del file debba essere rimosso. – Jayashri

+0

Quale lingua? Quale piattaforma? – Oded

+0

unix, Ho provato con lo script di comando awk – Jayashri

risposta

4

In generale, Unix strumenti di testo sono più felici se si fai hanno una nuova riga alla fine dell'ultima riga nel file. Perché hai bisogno di rimuoverlo?

Non si può fare questo (per quanto ne so) con awk, ma è facile con perl:

perl -e 'undef $/; $_ = <>; s/\R\z//; print' 

EDIT: Anni dopo mi viene in mente che si potrebbe avere significato "come faccio a eliminare righe vuote finali dalla fine del file "; in altre parole, potresti voler ridurre due o più righe nuove consecutive a una sola volta, solo alla fine del file. Anche in questo caso che è più facile con perl:

perl -e 'undef $/; $_ = <>; s/\s+\z/\n/; print' 

(questo sarà Zorch arbitraria finale spazi bianchi personaggi, non solo di ritorno a capo Questo è quasi certamente quello che vuoi..)

11

È possibile:

perl -pe 'chomp if eof' file1 > file2 

Esempio:

$ cat file1 
abc 
def 
ghi 
$ perl -pe 'chomp if eof' file1 > file2 
$ cat file2 
abc 
def 
ghi$ 
+0

Non riesco a rimuovere \ n dal file, dallo script precedente – Jayashri

+4

Nota, se 'file1' è uguale a' file2' potrebbe cancellare il file . Essere avvertito Mi è successo. Fortunatamente conoscevo il contenuto. –

+0

Mi aspetto che questo non funzioni, almeno non in modo affidabile, perché 'eof' diventa vero solo quando si tenta di leggere * oltre la fine * del file, cosa che non è necessariamente avvenuta in modalità' -pe' quando ' $ _' è l'ultima riga del file. – zwol