2017-09-15 3 views
1

J'ai ce fichier fichier CSV.Convertir CSV en format TSV pour Mongo Import

0161-1#CT-00#1;Others;0 
0161-1#CT-01#1;Class;1 
0161-1#CT-02#1;Property;2 
0161-1#CT-03#1;Feature;3 
0161-1#CT-04#1;Representation;4 
0161-1#CT-05#1;Unit of Measure;5 
0161-1#CT-06#1;Qualifier of Measure;6 
0161-1#CT-07#1;Property Value;7 
0161-1#CT-08#1;Currency;8 
0161-1#CT-09#1;Data Type;9 

Quand je lance cette commande pour convertir csv avec virgule pour fichier TSV:

tr ";" "\t" < testing.csv dans le terminal sur mon Mac. Il imprime seulement le texte comme ceci, il n'enregistre pas le dossier.

0161-1#CT-00#1 Others 0 
0161-1#CT-01#1 Class 1 
0161-1#CT-02#1 Property 2 
0161-1#CT-03#1 Feature 3 
0161-1#CT-04#1 Representation 4 
0161-1#CT-05#1 Unit of Measure 5 
0161-1#CT-06#1 Qualifier of Measure 6 
0161-1#CT-07#1 Property Value 7 
0161-1#CT-08#1 Currency 8 
0161-1#CT-09#1 Data Type 9%                                                   ➜ eotd-cleaned 

Il semble que cela fonctionne, mais le fichier n'est pas enregistré. Que dois-je ajouter sur cette ligne de commande pour l'enregistrer dans ce fichier ou dans un nouveau fichier?

Répondre

2

De nombreux petits outils de traitement de texte Unix sont conçus pour fonctionner dans les pipelines et il est supposé que l'utilisateur final va créer un nouveau fichier en utilisant la redirection de la sortie, à savoir.

tr ";" "\t" <testing.csv> testing.tsv 

Si vous avez besoin/voulez garder le même nom, et vous êtes OK avec suppression de votre fichier source d'origine, la chose sûre à faire est d'ajouter une commande rm condtional, comme

tr ";" "\t" <testing.csv> testing.tsv && rm testing.csv 

OU vous pouvez renommer (mv) le fichier avec

tr ";" "\t" <testing.csv> testing.tsv && mv testing.tsv testing.csv 

les && signifie « exécuter uniquement le bit suivant si la commande précédente terminée esprit erreur de hout.

Il existe de nombreux autres utilitaires texte unix/linux qui peuvent faire cette substitution, la plus propre un étant

sed -i 's/;/<t>/g' testing.csv 

où vous avez remplacé le <t> dans la commande avec un vrai onglet ombles, en appuyant sur la touche Tab sur votre clavier.

Comme vous utilisez un Mac, vous aurez besoin de spécifier un nom de fichier de sauvegarde dans le cadre du -i, comme

sed -i'' 's/;/<t>/g' testing.csv 

Les moyens '' ne créent pas vraiment un fichier de sauvegarde. Vous pouvez faire sed -i.bak pour un vrai fichier de sauvegarde.

D'autres solutions existent, alors essayez de rechercher ici "substitutions de texte dans le fichier".

IHTH