Trouver et Remplacer par des Espaces à l'aide de Sed Mac Terminal
J'ai un .Fichier CSV avec plus de 500 000 lignes que j'ai besoin de:
- trouver tous les "espace double citation de" l'espace des séquences et de les remplacer par rien
- trouver tous les " espace double citation des séquences et de les remplacer par rien
- trouver tous les guillemets doubles et les remplacer par rien
Exemple de .CSV ligne:
"DISH Hartford & New Haven (Hartford)", "206", "FBNHD", " 06028", " East Windsor Hill", "CT", "Hartford County"
** Sortie**
DISH Hartford & New Haven (Hartford),206,FBNHD,06028,East Windsor Hill,CT,Hartford County
J'ai besoin de supprimer tous les guillemets doubles ("
) et les espaces devant et derrière la virgule (,
).
J'ai essayé
$ cd /Users/Leonna/Downloads/
$ cat bs-B2Bformat.csv | sed s/ " //g
Cela me donne la commande 'incomplète' plus que rapide, j'ai donc essayé:
$ cat bs-B2Bformat.csv | sed s/ " //g
sed: 1: "s/": unterminated substitute pattern
$ cat bs-B2Bformat.csv |sed s/\" //g
sed: 1: "s/": unterminated substitute pattern
$
Il y a trop de lignes pour moi de modifier dans Excel (Excel ne sont pas charger toutes les lignes) ou même un éditeur de texte. Comment puis-je résoudre ce problème?
édité ma réponse. cela devrait le faire...
Commentaire général — de joindre
Commentaire général — de joindre
sed
scripts dans des guillemets simples. Par exemple: sed 's/ " //g'
. Le seul moment où vous ne faites pas ça, c'est ... peut-être ... quand la commande elle-même doit contenir des guillemets simples, même si vous êtes généralement mieux l'écriture de chaque littéral de devis unique en tant que '\''
, de sorte que vous pouvez écrire sed 's/ '\'' //g'
.
OriginalL'auteur Leonna Sylvester | 2013-09-17
Vous devez vous connecter pour publier un commentaire.
Cité de ici:
Sur cette base, je dirais que la suivante, ce qui, comme Jonathan Leffler souligné, est portable sur GNU et BSD implémentations.
La
-E
drapeau permet de les expressions régulières étendues sur les implémentations de BSD. Sur GNUsed
il est sans-papiers, mais comme discuté ici, il permet la compatibilité avec les BSD standard.De la cité manuel pour BSD
sed
:L'application de la commande ci-dessus sur un fichier contenant la ligne suivante
il rendements
sed
. La question mentionne Mac. Avec Macsed
, vous devez spécifier un suffixe pour la sauvegarde (-i.bak
par exemple). Aussi, Macsed
ne pas interpréter EREs par défaut; vous devez les activer avec-E
. Les antislashs devant les points d'interrogation ne sont pas nécessaires, soit. Donc, sur Mac, cela fonctionne:sed -E 's/[[:space:]]?"[[:space:]]?//g
(avec les deux BSD et GNUsed
commandes) — évidemment sans écraser un fichier, mais vous pouvez ajouter la-i.bak
si vous le souhaitez.merci pour l'entrée, fixe.
C'est absolument la bonne réponse. \s ne fonctionnera pas sur OSX.
OriginalL'auteur brunocodutra
Cela devrait le faire:
OriginalL'auteur Shylo Hana
Cela fonctionne pour moi. Est-ce que vous souhaitez ?
OriginalL'auteur iamauser
Une façon est d'utiliser python et son
csv
module:L'exécuter comme:
Que les rendements:
OriginalL'auteur Birei
Ce que toutes les réponses ne semble pas manquer:
Le problème ci-dessus est manquant entre guillemets simples. Il doit avoir été:
Sans les guillemets simples, bash se fend sur les espaces et les envoie trois arguments (enfin au moins pour le cas de
\"
). sed était de voir son premier argument comme justes/
.Edit: pour info, seul les guillemets ne sont pas nécessaires, ils ne font de ce cas plus facile. Si vous souhaitez utiliser des guillemets, tout simplement échapper celle que vous voulez garder pour la correspondance:
OriginalL'auteur Nashenas