J'ai un fichier [csv] avec des données en double réimprimées, c'est-à-dire les mêmes données imprimées deux fois. Je l' ai essayé d' utiliser le uniq de sorte
par sort myfile.csv | uniq -u
mais il n'y a pas de changement dans le myfile.csv
, aussi je l' ai essayé , sudo sort myfile.csv | uniq -u
mais pas de différence.
Donc, actuellement, mon fichier csv ressemble à ceci
a
a
a
b
b
c
c
c
c
c
Je voudrais y ressembler
a
b
c
text-processing
files
3kstc
la source
la source
man sort
, vous ne pouvez pas trier "sur place".Réponses:
La raison pour laquelle
myfile.csv
est ne change pas parce que l'-u
optionuniq
sera uniquement imprimer des lignes uniques. Dans ce fichier, toutes les lignes sont des doublons et ne seront donc pas imprimées.Cependant, plus important encore, la sortie ne sera pas enregistrée
myfile.csv
car elleuniq
sera simplement imprimée surstdout
(par défaut, votre console).Vous devez faire quelque chose comme ceci:
$ sort -u myfile.csv -o myfile.csv
Les options signifient:
-u
- ne garder que des lignes uniques-o
- sortie dans ce fichier au lieu destdout
Vous devriez voir
man sort
pour plus d'informations.la source
Comme l'a montré Belmin, le tri est super. Sa réponse est la meilleure pour les données non triées, et elle est facile à mémoriser et à utiliser.
Cependant, il est également volatil, car il change l'ordre de l'entrée. Si vous devez absolument faire passer les données dans le même ordre mais en supprimant les doublons ultérieurs, awk peut être préférable.
Affaire bizarre, mais elle revient de temps en temps.
De plus, si vos données sont déjà triées lorsque vous les piquez, vous pouvez simplement exécuter uniq.
L'inconvénient de mes deux suggestions est que vous devez utiliser un fichier temporaire et le recopier.
la source
uniq
-u
uniquement imprimer des lignes uniques. Votre saisie n'a pas de lignes uniques, alorsuniq -u
n'imprimez rien. Vous avez seulement besoin desort
:la source
Si vous souhaitez conserver l'ordre du fichier (non trié) tout en supprimant les doublons, vous pouvez également le faire
Par exemple
Il produira
la source