sort | uniq | xargs grep ... où les lignes contiennent des espaces

J'ai un fichier délimité par des virgules "monfichier.csv" où la 5ème colonne est un timbre de date/heure. (mm/jj/aaaa hh:mm). j'ai besoin de la liste de toutes les lignes qui contiennent des doublons de dates (il y en a beaucoup)

Je suis en utilisant un shell bash via cygwin pour WinXP

$ cut -d, -f 5 myfile.csv | sort | uniq -d 

correctement renvoie une liste des doubles dates

01/01/2005 00:22
01/01/2005 00:37
[snip]    
02/29/2009 23:54

Mais je ne peux pas comprendre comment nourrir ce grep pour me donner toutes les lignes.
Évidemment, je ne peux pas utiliser xargs droite depuis la sortie contient des espaces. J'ai pensé que je pouvais faire uniq -z -d mais pour une raison quelconque, la combinaison de ces drapeaux causes uniq pour (apparemment) renvoie rien.

Donc, étant donné que

 $ cut -d, -f 5 myfile.csv | sort | uniq -d -z | xargs -0 -I {} grep '{}' myfile.csv

ne fonctionne pas... que puis-je faire?

Je sais que je pourrais le faire dans perl ou un autre langage de script... mais mon entêtement insiste sur le fait que je devrais être capable de le faire dans bash standard en utilisant des outils en ligne de commande comme sort, uniq, find, grep, cut, etc.

apprends-moi, oh bash gourous. Comment puis-je obtenir la liste des lignes j'ai besoin d'aide typiques des outils cli?

OriginalL'auteur Sukotto | 2009-03-04