2011-04-18 3 views
4

J'ai utilisé 'uniq -d -c file' dans beaucoup de scripts shell sur des machines linux, et cela fonctionne. Sur mon Mac (OS X 10.6.7 avec des outils de développement installés), il ne semble pas fonctionner:Comportement étrange d'uniq sur les shells darwin

$ uniq -d -c testfile.txt 
usage: uniq [-c | -d | -u] [-i] [-f fields] [-s chars] [input [output]] 

Ce serait bien si quelqu'un pouvait vérifie cela.

Répondre

6

Eh bien, c'est juste là dans le message Usage. [ -c | -d | -u] signifie que vous pouvez utiliser un de ces possibilités, pas deux. Depuis OSX est basé sur BSD, vous pouvez vérifier que here ou, grâce à Ignacio, le plus spécifique here Apple.

Si vous souhaitez obtenir une sortie similaire, vous pouvez utiliser:

do_your_thing | uniq -c | grep -v '^ *1 ' 

qui dépouillera toutes ces lignes coalisés qui ont un compte d'une.

+1

http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/uniq.1.html –

+0

Mais uniq -d -u 'fait, c'est confus. – former

+0

@former, c'est énervant. Je soupçonne que le logiciel s'effondre sous le poids de la philosophie en essayant de comprendre comment produire à la fois des lignes dupliquées et seulement des lignes uniques :-) Cela ressemble beaucoup à un bug basé sur l'utilisation. – paxdiablo

0

Vous pouvez essayer cette solution awk

awk '{a[$0]++}END{for(i in a)if(a[i]>1){ print i ,a[i] } }' file