Existe um comando Bash para converter \ r \ n em \ n?
Quando carrego meus scripts do Windows para o Linux, preciso de um utilitário como este para fazer as coisas funcionarem.
dos2unixum programa Unix / Linux para fazer o que você deseja.
Existe um comando Bash para converter \ r \ n em \ n?
Quando carrego meus scripts do Windows para o Linux, preciso de um utilitário como este para fazer as coisas funcionarem.
dos2unixum programa Unix / Linux para fazer o que você deseja.
Respostas:
O Translate ( tr ) está disponível em todos os Unixes:
tr -d '\r' # From \r\n line end (DOS/Windows), the \r will be removed so \n line end (Unix) remains.
\rtambém. Eles são altamente incomuns.
Existe um utilitário Unix chamado convque pode converter as terminações de linha. É frequentemente chamado com links flexíveis para u2dou d2uou unix2dosou dos2unix.
Além disso, existem utilitários chamados fromdose todos.
Usando man 1 ed (que edita arquivos no local sem nenhum backup anterior - diferente de: sed .. -i ".bak" ...):
ed -s file <<< $'H\ng/\r*$/s///\nwq'
Fazer isso com o POSIX é complicado:
O POSIX Sed não suporta \rou \15. Mesmo se tiver, a opção no local -inão é POSIX
O POSIX Awk suporta \re \15, no entanto, a -i inplaceopção não é POSIX
O d2u e o dos2unix não são utilitários POSIX , mas ex é
POSIX ex não suporta \r, \15, \nou\12
Para remover retornos de carro:
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\r","");print>ARGV[1]}' file
Para adicionar retornos de carro:
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file
Sim, use dos2unix. Por exemplo:
[justin@mybox ~]$ dos2unix myfile
dos2unixnormalmente está disponível, caso contráriosed -e 's/\r$//'