Comment supprimer toutes les instances d'un symbole particulier d'un fichier texte?


13

J'ai un énorme fichier CSV (environ un demi-Gio, impossible d'utiliser un éditeur de texte habituel) avec des champs entre guillemets, "abc","def"mais j'ai besoin d'un fichier sans guillemets (je suis sûr que cela ne va pas briser la cohérence du fichier - une virgule n'est jamais utilisée à l'intérieur des valeurs qu'elle contient).

Comment supprimer toutes les citations (sans introduire d'espaces sur leurs emplacements)?

Réponses:


21

tr peut faire ça:

tr -d \" < infile > outfile

Vous pouvez également utiliser sed:

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

1
Pourquoi avez-vous supprimé < infile > outfile? À mon humble avis, il était plus informatif.
Ivan

@Ivan Je pensais que c'était probablement implicite à la réflexion.
Chris Down

Uniquement pour les utilisateurs expérimentés en ligne de commande. Même si j'ai déjà utilisé <plusieurs fois (pour importer des scripts SQL dans MySQL et SQLite), il serait immédiatement évident pour moi que je devrais utiliser <dans ce cas. Je pense qu'il serait préférable de renvoyer l'exemple complet de ligne de commande pour une référence supplémentaire à ceux qui pourraient en avoir besoin.
Ivan

@Ivan et @Chris, je l'ai rétabli (en attente d'examen) pour l'inclure < infile > outfile, j'espère que c'est OK.
donothingsucc

Merci, @donothingsuccès. J'ai totalement mal écrit le commentaire précédent, c'est dommage que je ne puisse pas le modifier% -]
Ivan

5

Une autre version de la commande sed :

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

    • -i i n-place (éditer le fichier sur place)
    • sla commande s ubstitute
    • /replacement_from_reg_exp/replacement_to_text/ déclaration
    • \"guillemets précédés d'une barre oblique inversée ( replacement_from_reg_exp )
    • chaîne vide entre les suppresseurs de barres obliques ( replacement_to_text )
    • g g lobal (pour remplacer toutes les occurrences en ligne)
  • file.txt le nom du fichier

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.