Perl lida com seqüências de escape, incluindo \n
para newline, um pouco mais abrangente que ferramentas Unix antigas.
perl -pe 's/\r\n//g'
Eu tenho um CSV com finais de linha unix, mas alguns dos valores de string têm finais de linha do Windows neles:
date,notes\n
2014-01-01,"Blah Blah Blah"\n
2014-01-02,"Two things:\r\n - first thing\r\n - second thing\n
2014-01-03,"Foo"\n
Note que \ n e mostramos apenas onde os caracteres não imprimíveis estão no arquivo, não é como ficaria se você os abrisse em um editor de texto.
Eu quero remover instâncias de \ r \ n, mas manter os finais de linha reais, onde é apenas \ n. A saída deve ser semelhante a:
date,notes\n
2014-01-01,"Blah Blah Blah"\n
2014-01-02,"Two things: - first thing - second thing\n
2014-01-03,"Foo"\n
Eu preciso de algo como tr -d '\r\n' file.csv
, mas onde ele exclui a string \r\n
, em vez de \r
ou \n
.
Se eu tentar processá-lo com sed
, ele será tratado assim ao processar linha por linha, por isso não funciona:
date,notes
2014-01-01,"Blah Blah Blah"
2014-01-02,"Two things:\r
- first thing\r
- second thing
2014-01-03,"Foo"
Você tentou substituir por sed
:
sed 's/\r\n//g' -i file.csv
Você tem que escapar das barras invertidas, ou seja,
tr -d '\r\n' file.csv
deve funcionar.
Já pensou em usar dos2unix?