Existe um comando Bash para converter \ r \ n para \ n?

17

Existe um comando Bash para converter \ r \ n para \ n?

Quando eu carrego meus scripts do Windows para o Linux, preciso de um utilitário como esse para fazer as coisas funcionarem.

    
por user25321 24.06.2010 / 16:15

9 respostas

23

Existe:

dos2unix
    
por 24.06.2010 / 16:17
5

Com sed e encontre esse fim com .txt, .php, .js, .css :

 sed -rie 's/\r\n/\n/' \
 $(find . -type f -iregex ".*\.\(txt\|php\|js\|css\)")
    
por 28.11.2012 / 02:38
5

Existe um utilitário Unix chamado conv que pode converter finais de linha. É frequentemente invocado com softlinks para u2d ou d2u ou unix2dos ou dos2unix .

Além disso, existem utilitários chamados fromdos e todos .

    
por 24.06.2010 / 16:17
4

Traduzir ( 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.
    
por 25.06.2010 / 13:56
2

Fazer isso com o POSIX é complicado:

Para remover retornos de carro:

awk 'BEGIN{RS="";ORS="";getline;gsub("\r","");print>ARGV[1]}' file

Para adicionar retornos de carro:

awk 'BEGIN{RS="";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file
    
por 17.04.2016 / 00:32
1

Usando man 1 ed (que edita arquivos no local sem qualquer backup anterior - ao contrário: sed .. -i ".bak" ...):

ed -s file <<< $'H\ng/\r*$/s///\nwq'
    
por 24.06.2010 / 19:26
0

Sim, use dos2unix . Por exemplo:

[justin@mybox ~]$ dos2unix myfile
    
por 24.06.2010 / 16:17
0

$ recode dos.. FILE
$ flip -u FILE

(Cada um também existe para sistemas não-Ubuntu, mas estes links são úteis.)

    
por 25.06.2010 / 03:27
-1

Você pode usar isso para substituir todas as linhas em massa em vários arquivos que terminam com .html . Você pode mudar isso para combinar com um novo nome.

find -iname "*.html" -exec sh -cC '
sed 's/\r\n/\n/' "$1" > "$1"
' {} {} \;
    
por 24.06.2010 / 17:24