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.
dos2unixun 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.
dos2unixun 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 convche può convertire le terminazioni di linea. Viene spesso invocato con collegamenti software a u2do d2uo unix2doso dos2unix.
Inoltre ci sono utility chiamate fromdose 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 \ro \15. Anche se così fosse, l'opzione sul posto -inon è POSIX
POSIX Awk supporta \re \15, tuttavia, l' -i inplaceopzione non è POSIX
D2U e dos2unix non sono POSIX utilità , ma ex è
POSIX ex non supporta \r, \15, \no\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
dos2unixdi solito è disponibile, altrimentised -e 's/\r$//'