Page 1 sur 1

[commande] Problème avec la commande uniq. (résolu)

Publié : mar. 15 mars 2016, 17:02
par Stdrome1209
Salut à toute et à tous, je suis actuellement en train de faire une petite révision de mes commandes Unix, et je rencontre un problème que je ne parviens pas à expliquer avec "uniq"

J'ai un fichier noms.txt dans lequel il y'a des doublons que j'ai auparavant trié avec sort :

Code : Tout sélectionner

Albert
Albert
Benoît
Benoît
Corentin
Corentin
Fabrice
Fabrice
Mathieu
Mathieu
Mélanie
Mélanie
Sophie
Sophie
J'utilise donc la commande uniq pour supprimer ces doublons :

Code : Tout sélectionner

uniq noms.txt noms.txt
Le problème est que dans ce cas mon fichier noms.txt est remplacé par un fichier vide :?

J'ai aussi essayé :

Code : Tout sélectionner

uniq noms.txt > noms.txt
Et là encore je me retrouve avec un fichier vide.

Par ailleurs ça fonctionne quand je génère un nouveau fichier nom.txt.copie

Code : Tout sélectionner

uniq noms.txt noms.txt.copie
Pouvez m'éclairer ?

Re: [commande] Problème avec la commande uniq.

Publié : mar. 15 mars 2016, 17:35
par benjarobin
Oui tu n'as pas le droit d'utiliser le même fichier pour l'entrée comme pour la sortie. cela parait logique en faite...
Ce qui se passe c'est que le programme ou bash vide le fichier de sortie, puis commence à lire le fichier d'entrée, mais il est maintenant vide car c'est le même fichier...

Sinon pour information sort possède une option -u pour ne pas avoir de duplication

Re: [commande] Problème avec la commande uniq.

Publié : mar. 15 mars 2016, 17:54
par Stdrome1209
Merci beaucoup, je vais donc utiliser "sort -ou"
benjarobin a écrit :Oui tu n'as pas le droit d'utiliser le même fichier pour l'entrée comme pour la sortie. cela parait logique en faite...
Ce qui se passe c'est que le programme ou bash vide le fichier de sortie, puis commence à lire le fichier d'entrée, mais il est maintenant vide car c'est le même fichier...
Je n'avais pas vu ça comme ça, je pensais que bash se contentais d'écrire le résultat dans un fichier au lieu de l'afficher dans la console.

Re: [commande] Problème avec la commande uniq. (résolu)

Publié : mar. 15 mars 2016, 19:26
par benjarobin
Euh, oui bash se contente d'écrire le résultat dans un fichier on est bien d'accord...
Sauf qu'ici tu demandes à bash de vider un fichier / d'en créer un nouveau vide, puis de lancer le programme, il le fait dans cet ordre !