Como remover todas as instâncias de um símbolo específico de um arquivo de texto?

13

Eu tenho um arquivo CSV enorme (cerca de metade de um GiB, impossível de usar um editor de texto comum) com campos entre aspas duplas como, "abc","def"mas preciso de um arquivo sem aspas (tenho certeza de que isso não interromperá a consistência do arquivo - uma vírgula nunca é usada dentro dos valores contidos nela).

Como remover todas as aspas (sem introduzir espaços em seus lugares)?

Ivan
fonte

Respostas:

21

tr pode fazer isso:

tr -d \" < infile > outfile

Você também pode usar sed:

sed 's/"//g' < infile > outfile
Chris Down
fonte
1
Por que você removeu < infile > outfile? IMHO foi mais informativo.
1013 Ivan Ivan
@ Ivan Eu pensei que provavelmente estava implícito no segundo pensamento.
Chris Baixo
Somente quando para usuários experientes da linha de comando. Mesmo que eu já tenha usado <algumas vezes (para importar scripts SQL para MySQL e SQLite), seria imediatamente óbvio para mim que eu deveria usar <neste caso. Eu acho que seria melhor retornar o exemplo completo da linha de comando para referência futura daqueles que precisam dele.
Ivan
@ Ivan e @ Chris, eu o revertei (revisão pendente) para incluir < infile > outfile, espero que esteja tudo bem.
donothingsuccessfully
Obrigado, @donothingsuccessfully. Eu digitei totalmente errado o comentário anterior, é uma pena que eu não possa editá-lo% -] #
Ivan Ivan
5

Outra versão do comando sed :

sed -i s/\"//g file.txt
  • sed s tream ed itor

    • -i i n-place (editar arquivo no local)
    • so comando s ubstitute
    • /replacement_from_reg_exp/replacement_to_text/ declaração
    • \"aspas precedidas por barra invertida ( Replacement_from_reg_exp )
    • cadeia vazia entre delemitadores de barra ( substituição_para_texto )
    • g g lobal (para substituir toda a ocorrência na linha)
  • file.txt o nome do arquivo

simhumileco
fonte