Wie entferne ich alle Instanzen eines bestimmten Symbols aus einer Textdatei?

13

Ich habe eine riesige CSV-Datei (ungefähr eine halbe GB, mit der kein normaler Texteditor verwendet werden kann) mit Feldern in doppelten Anführungszeichen, "abc","def"aber ich brauche eine Datei ohne Anführungszeichen (ich bin sicher, das wird die Dateikonsistenz nicht beeinträchtigen). In den Werten wird niemals ein Komma verwendet.

Wie entferne ich alle Anführungszeichen (ohne Leerzeichen an ihren Stellen einzufügen)?

Ivan
quelle

Antworten:

21

tr kann das tun:

tr -d \" < infile > outfile

Sie könnten auch verwenden sed:

sed 's/"//g' < infile > outfile
Chris Down
quelle
1
Warum bist du umgezogen < infile > outfile? IMHO war es informativer.
Ivan
@Ivan Ich dachte, dass es wahrscheinlich beim zweiten Nachdenken implizit war.
Chris Down
Nur für erfahrene Kommandozeilenbenutzer. Obwohl ich ein <paar Mal zuvor verwendet habe (um SQL-Skripte in MySQL und SQLite zu importieren), wäre es für mich sofort klar, dass ich <in diesem Fall verwenden sollte. Ich denke, es wäre besser, das vollständige Befehlszeilenbeispiel zur weiteren Bezugnahme auf diejenigen zurückzugeben, die es möglicherweise benötigen.
Ivan
@Ivan und @Chris, ich habe es zurückgesetzt (ausstehende Überprüfung), um einzuschließen, < infile > outfilehoffe, dass das in Ordnung ist.
donothingsuccessfully
Vielen Dank, @donothingsuccessfully. Ich habe den vorherigen Kommentar völlig falsch geschrieben, das ist schade, dass ich ihn nicht bearbeiten kann% -]
Ivan
5

Eine andere Version des sed Befehls:

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

    • -i i n-place (Datei an Ort und Stelle bearbeiten)
    • sder s ubstitute Befehl
    • /replacement_from_reg_exp/replacement_to_text/ Erklärung
    • \"Anführungszeichen mit vorangestelltem Backslash ( replacement_from_reg_exp )
    • leere Zeichenfolge zwischen Schrägstrichen ( replacement_to_text )
    • g g lobal (für alle Vorkommen in der Zeile ersetzen)
  • file.txt der Dateiname

simhumileco
quelle