Como remover ^ M e continuar as linhas de um arquivo de texto?

2

Eu tenho as seguintes linhas com ^ M (transporte de retorno). Eu quero remover ^ M + linha de procedimento. Você pode notar que há uma nova linha após cada ^ M, o que não é desejado. A finalidade é remover o caractere de controle e criar uma linha CSV.

    '1.0';'';'';'';'Mon Jul 04 00:00:00 CEST 2016';'To cash Pls Acc 4142^M
To cash Pls Acc 4142';'To cash Pls Acc 4142^M
Money';'236159';'236159';'-2000.0';'';'2000.0'

Eu tentei seguir mas não trabalhei. NOTA: ^ M = CONTROLO v + CONTRL m

cat file.csv | sed 's/[\^M\n]//g' > new_file.csv

acima das linhas removidas ^ M, mas a linha ainda está quebrada com a nova linha.

saída esperada

 '1.0';'';'';'';'Mon Jul 04 00:00:00 CEST 2016';'To cash Pls Acc 4142To cash Pls Acc 4142';'To cash Pls Acc 4142 Money';'236159';'236159';'-2000.0';'';'2000.0'
    
por amjad 02.01.2017 / 12:19

2 respostas

3

Isso funciona para o seu caso:

sed -i ':a;N;$!ba;s/\r\n//g' file.csv

De: Pode sed substituir novos caracteres de linha?

Ou este aqui:

sed -e :a -e '/\r$/N; s/\r\n//; ta' file.csv

De: link

Observe que você não precisa usar cat e pode editar diretamente seu arquivo com a opção -i , se desejar.

    
por 02.01.2017 / 12:44
-1

É \r não ^M . A maneira mais simples de fazer isso é:

tr -d '\n-\r' < file.

-d significa excluir e \n-\r é o intervalo de caracteres para tr unation.

Observe que esse código também removerá ocorrências de \n s não precedidas por " ^M " s.

    
por 02.01.2017 / 16:53

Tags