Re: [exim] Need a little bash scripting help [OT]

Pàgina inicial
Delete this message
Reply to this message
Autor: Marc Perkel
Data:  
A: exim-users
Assumpte: Re: [exim] Need a little bash scripting help [OT]


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.