On 12/12/2010 3:23 PM, Heiko Schlittermann wrote:
> Marc Perkel<marc@???> (So 12 Dez 2010 23:54:19 CET):
>>
>> On 12/12/2010 2:40 PM, Heiko Schlittermann wrote:
>>> Marc Perkel<marc@???> (So 12 Dez 2010 23:26:54 CET):
>>>>> in bash:
>>>>>
>>>>> $ cat test.txt | sort | uniq -c | while read line; do count=${line% *}; if
> BTW, useless use of cat :-)
>
>>>>> [ $count -ge 3 ]; then echo ${line/*$count /}; fi; done
>>>>> four
>>>>> three
>>>>> $
>>>>>
>>>>> Cheers,
>>>> Thanks but I'm getting "too many arguments" on
>>>>
>>>> [ $count -ge 3 ];
>>> If you quote $count
>>>
>>> [ "$count" -ge 3 ]
>>>
>>> the error will disappear. But this would fix just the symptom, as any
>>> line should have a count prepended.
>>>
>> Well - getting "integer expression expected" now. :(
> For testing:
>
> <test.txt sort | uniq -c | while read line; do count=${line% *}; echo "$count : $line"; done
>
> But the solution using grep is much more clean.
>
> Or try this (it's what I was thinking about when I told you about the -c
> option on uniq)
>
> <test.txt sort | uniq -c | while read count line; do
> [ $count -ge 2 ]&& echo "$line"
> done
>
The problem is that I have a space in the data I'm sorting. The code
that sets the $count variable includes up to the last space in the string.