Esiste un comando Bash per convertire \ r \ n in \ n?
Quando carico i miei script da Windows a Linux, ho bisogno di un'utilità come questa per far funzionare le cose.
dos2unix
un programma Unix / Linux per fare quello che vuoi.
Esiste un comando Bash per convertire \ r \ n in \ n?
Quando carico i miei script da Windows a Linux, ho bisogno di un'utilità come questa per far funzionare le cose.
dos2unix
un programma Unix / Linux per fare quello che vuoi.
Risposte:
Translate ( tr ) è disponibile in tutti gli Unix:
tr -d '\r' # From \r\n line end (DOS/Windows), the \r will be removed so \n line end (Unix) remains.
\r
. Sono molto rari però.
Esiste un'utilità Unix chiamata conv
che può convertire le terminazioni di linea. Viene spesso invocato con collegamenti software a u2d
o d2u
o unix2dos
o dos2unix
.
Inoltre ci sono utility chiamate fromdos
e todos
.
Usando man 1 ed (che modifica i file sul posto senza alcun backup precedente - a differenza di: sed .. -i ".bak" ...):
ed -s file <<< $'H\ng/\r*$/s///\nwq'
Farlo con POSIX è complicato:
POSIX Sed non supporta \r
o \15
. Anche se così fosse, l'opzione sul posto -i
non è POSIX
POSIX Awk supporta \r
e \15
, tuttavia, l' -i inplace
opzione non è POSIX
D2U e dos2unix non sono POSIX utilità , ma ex è
POSIX ex non supporta \r
, \15
, \n
o\12
Per rimuovere i ritorni a capo:
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\r","");print>ARGV[1]}' file
Per aggiungere resi di trasporto:
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file
Sì, usa dos2unix
. Per esempio:
[justin@mybox ~]$ dos2unix myfile
dos2unix
di solito è disponibile, altrimentised -e 's/\r$//'