J'ai un gros fichier CSV dont j'ai besoin pour supprimer la première colonne de données. Je ne peux pas l'ouvrir dans Excel car Excel convertit certaines des valeurs des colonnes en nombres scientifiques.
J'utilise Notepad ++ , et j'essaie d'enchaîner la première colonne du fichier EXE,
1,Value1,value2,value3,value4,value5
3445,Value1,value2,value3,value4,value5
12345,Value1,value2,value3,value4,value5
1234,Value1,value2,value3,value4,value5
11,Value1,value2,value3,value4,value5
ressembler à
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
la source
^[^,]+,
et remplacer par vide?Appuyez sur Ctrl+ Het effectuez le remplacement suivant:
Appuyez maintenant sur Alt+ Apour remplacer toutes les occurrences.
Comment ça fonctionne
L' expression régulière
.*?,(.*)
correspond à une ligne entière:.*?,
correspond à tout avant la première virgule, y compris la virgule elle-même..*
signifie n'importe quel nombre d'occurrences de n'importe quel caractère, et le point d'interrogation rend le quantificateur paresseux , c'est-à-dire qu'il correspond au moins de caractères possible.(.*)
correspond à tout après la première virgule.Le placer
.*
entre parenthèses le convertit en sous-modèle, de sorte que le mât est accessible dans le champ de remplacement.\1
représente le premier sous-match (correspond à(.*)
).Par conséquent, Notepad ++ remplace la ligne par tout ce qui suit la première virgule.
la source
^[^,]+,
globalement remplacé par une chaîne vide ne fonctionnera pas dans Notepad ++. (+1)Sous Windows, vous pouvez le faire comme suit.
J'ai supposé que vous n'aviez que 6 colonnes. Si vous avez beaucoup plus de colonnes, essayez d'expérimenter * dans le champ des jetons. L'idée est tirée de Windows pour la commande
la source
for /F "tokens=1* delims=," %i in (Input.csv) do @echo %j >> output.csv
En supposant que vous avez un système Linux ou un environnement de style Unix (j'aime gow , ou vous pouvez snarf les utilitaires hors unixutils ), je crois que l'exécution du fichier
cut -d , -f2-6
devrait faire l'affaire - il le devrait, si je me souviens bien fera l'affaire --d
définit la délimiteur etf2-6
imprime le deuxième au sixième caractère.cat input.csv | cut -d , -f2-6 > output.csv
ferait l'affaire en prenant le fichier d'entrée et en supprimant un fichier de sortie. Il n'utilise pas le bloc-notes, mais c'est rapide et vraiment simple.la source
Vous devriez être capable de charger le CSV dans Excel et de le faire traiter les nombres comme du texte (l'empêchant de se convertir en nombres scientifiques).
la source
Notepad ++ a une édition de colonnes intégrée et une commande Line Up by (,) (plugin TextFX) donnant une solution graphique de pointer-cliquer qui est probablement la première fois. Cela évite d'avoir à utiliser des expressions régulières ou une programmation shell, qui nécessitent généralement un débogage jusqu'à ce qu'elles fassent exactement ce que vous voulez et rien de plus.
Point de départ : fichier CSV avec des colonnes mal alignées, donc pas facile à éditer par colonne ...
Procédure:
Sélectionnez les lignes d'intérêt - peut-être l'intégralité du fichier.
Utilisez la commande de menu TextFX> TextFX Edit> Aligner plusieurs lignes par virgule (,) Cela aligne toutes les lignes par colonne et facilite l'édition des colonnes.
Entrez en mode colonne dans la colonne après la première virgule (,) Pour un petit nombre de lignes, utilisez les commandes du clavier: Alt + Maj + Flèche bas.
Si vous devez travailler sur plusieurs lignes (fichier volumineux), utilisez Alt + souris et cliquez sur la colonne souhaitée de la première ligne, puis passez à la dernière ligne du fichier et Alt + Maj + cliquez sur la même position de colonne. Cela active le mode colonne sur le fichier ENTIER - vous devriez voir une ligne verticale derrière toutes les virgules.
Supprimer en mode colonne supprime une colonne entière de caractères. Vous pouvez donc tout supprimer en une seule fois avant la première virgule dans toutes les lignes pour obtenir:
Terminé!
Remarquez cette solution par rapport aux différentes autres proposées jusqu'à présent:
L'édition en mode colonne est assez puissante et, lorsqu'elle est combinée avec les options du plugin TextFX, s'applique à une variété de situations de manière ponctuelle et rapide.
Par exemple, si vous avez décidé de supprimer la 2e colonne ou la Ne colonne rapidement, cette approche fonctionne sans presque aucune modification.
Les expressions régulières, les scripts shell, en revanche, atteindront l'objectif, oui, mais dans les problèmes complexes, vous passerez plus de temps à "déboguer" votre syntaxe.
La fonctionnalité intégrée polyvalente de Notepad ++ est l'une de ses principales forces: vous obtenez pas mal de puissance sans avoir à recourir à la "programmation".
la source
Si vous connaissez le plugin de la console Python pour Notepad ++, je peux vous conseiller une autre méthode. Vous devez ajouter votre texte sur le document Notepad ++ et exécuter le script suivant dans la console:
Ce script a ajouté le texte du résultat à votre document Notepad ++ actuel.
la source
Exécuter
vim
(en mode commande, sinon appuyer sur Echap).Tapez la commande suivante pour mapper l'action de suppression de la première colonne à la
q
clé:Ce qui signifie:
0
- aller au début de la lignedf,
- d tout elete jusqu'à , le caractère (y compris par des virgules),j
- descendre une ligne0
- aller au début de la ligneAppliquez ensuite cette action à toutes les lignes:
Cela signifie que vous exécutez l'action qui est affectée à la clé
q
du début (0) à la fin ($).la source
:%s/^[^,]\+,//g
?