2011-12-26 25 views
7

Quiero eliminar la nueva línea \n solo desde el final del archivo en unix
p. salidaEliminar nueva línea del final del archivo

abc 
def 
ghi 
​ 

debe ser

abc 
def 
ghi 

En el final del archivo no debe haber una sola \n

+0

awk '{if (NR == 1 && $ 0 ~ /> /) {print $ 0; next} if ($ 0 ~/^> /) {print "\ n" $ 0; next} else {printf ("% s" , $ 0)}} 'filename He intentado el script anterior pero está eliminando todo \ n pero quiero que \ n que existe al final del archivo se elimine. – Jayashri

+0

¿Qué idioma? ¿Qué plataforma? – Oded

+0

unix, Probé con awk command script – Jayashri

Respuesta

4

En general, herramientas de texto Unix son más felices si hace tienen una nueva línea al fin de la última línea en el archivo. ¿Por qué necesitas quitarlo?

No se puede hacer esto (por lo que yo sé) con awk, pero es fácil con perl:

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

EDIT: Años después se me ocurre que podría haber significado "cómo elimino líneas en blanco al final desde el final del archivo "; en otras palabras, es posible que haya querido reducir dos o más líneas consecutivas a una sola, solo al final del archivo. Una vez más esto es más fácil con perl:

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

(Esto se Zorch arbitraria detrás espacios en blanco personajes, no sólo los saltos de línea Esto es casi seguro que lo que quiere..)

11

Puede:

perl -pe 'chomp if eof' file1 > file2 

Ejemplo:

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

No puedo eliminar \ n del archivo, del script anterior – Jayashri

+4

Nota, si 'archivo1' es lo mismo que' archivo2' podría borrar el archivo . Ten cuidado. Me sucedió. Afortunadamente, sabía el contenido. –

+0

Esperaría que esto no funcione, al menos no confiablemente, porque 'eof' solo se vuelve verdadero cuando ha intentado leer * pasado el final * del archivo, lo que no necesariamente ha sucedido en el modo' -pe' cuando ' $ _' es la última línea del archivo. – zwol

Cuestiones relacionadas