Come rimuovere tutte le istanze di un particolare simbolo da un file di testo?


13

Ho un enorme file CSV (circa mezzo GiB, impossibile usare un normale editor di testo) con campi racchiusi tra virgolette come "abc","def"ma ho bisogno di un file senza virgolette (sono sicuro che questo non romperà la coerenza del file - una virgola non viene mai utilizzata all'interno dei valori in essa contenuti).

Come rimuovere tutte le virgolette (senza introdurre spazi nei loro luoghi)?

Risposte:


21

tr può farlo:

tr -d \" < infile > outfile

Puoi anche usare sed:

sed 's/"//g' < infile > outfile

1
Perché l'hai rimosso < infile > outfile? IMHO era più informativo.
Ivan,

@Ivan Ho pensato che probabilmente era implicito nel ripensarci.
Chris Down,

Solo quando per utenti esperti della riga di comando. Anche se l'ho già usato <un paio di volte (per importare script SQL in MySQL e SQLite) Sarebbe immediatamente ovvio per me che dovrei usare <in questo caso. Penso che sarebbe meglio restituire l'esempio completo della riga di comando per un ulteriore riferimento di coloro che potrebbero averne bisogno.
Ivan,

@Ivan e @Chris, l'ho ripristinato (in attesa di revisione) per includerlo < infile > outfile, spero sia OK.
indossando con successo il

Grazie @donothings con successo. Ho completamente sbagliato a scrivere il commento precedente, è un peccato non poterlo modificare% -]
Ivan

5

Un'altra versione del comando sed :

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

    • -i i n-posto (file di modifica sul posto)
    • sil comando s ubstitute
    • /replacement_from_reg_exp/replacement_to_text/ dichiarazione
    • \"virgolette precedute da barra rovesciata ( sostituzione_from_reg_exp )
    • stringa vuota tra i delimitatori di barra ( sostituzione_to_testo )
    • g g lobal (per sostituire tutte le occorrenze in linea)
  • file.txt il nome del file

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.