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.
dos2unix
um 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.
dos2unix
um 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.
\r
também. Eles são altamente incomuns.
Existe um utilitário Unix chamado conv
que pode converter as terminações de linha. É frequentemente chamado com links flexíveis para u2d
ou d2u
ou unix2dos
ou dos2unix
.
Além disso, existem utilitários chamados fromdos
e 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 \r
ou \15
. Mesmo se tiver, a opção no local -i
não é POSIX
O POSIX Awk suporta \r
e \15
, no entanto, a -i inplace
opçã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
, \n
ou\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
dos2unix
normalmente está disponível, caso contráriosed -e 's/\r$//'