Existe:
dos2unix
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.
Existe:
dos2unix
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\)")
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
.
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.
Fazer isso com o POSIX é complicado:
POSIX Sed não suporta \r
ou . Mesmo se o fizesse, o no lugar
opção
-i
não é POSIX
POSIX Awk suporta \r
e , no entanto, o
-i inplace
opção
não é POSIX
d2u e dos2unix não são Utilitários POSIX , mas ex é
ex POSIX não suporta \r
, ,
\n
ou
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
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'
Sim, use dos2unix
. Por exemplo:
[justin@mybox ~]$ dos2unix myfile
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"
' {} {} \;
Tags bash linux newlines carriage-return