On Tue, May 5, 2009 at 6:29 AM, Rudolf Sykora <[email protected]> wrote:
> Hello everyone!
>
> To get some useful information from a file I write:
>
> ; for (i in *_r) @{cd $i; echo -n $i^'  '; grep total otdit | grep -v na}
>
> to get lines from the 'otdit' files in *_r subdirectories with the
> word 'total' on them, but no 'na' on them. This works to my liking and
> produces sth. like
>
> 10_r    total        :   9.4105E-01
> 11_r    total        :   9.3897E-01
> 12_r    total        :   9.3685E-01
> 13_r    total        :   9.3446E-01
> 14_r    total        :   9.3180E-01
> 15_r    total        :   9.2890E-01
> 16_r    total        :   9.2589E-01
> 17_r    total        :   9.2299E-01
> 18_r    total        :   9.1860E-01
> ...
> 9_r     total        :   9.4317E-01
>
> Ok, now I wanted to save this, so I naively appended '> res'. But then
> the contents of 'res' was only the last line:
> 9_r     total        :   9.4317E-01

In

; for (i in *_r) @{cd $i; echo -n $i^'  '; grep total otdit | grep -v na} > res

the >res binds tighter than the for loop, so it runs a separate
redirection for each iteration.  You need

; { for (i in *_r) @{cd $i; echo -n $i^'  '; grep total otdit | grep
-v na}} > res

> Ok, so I thought '>> res' should be used instead. But then I got sth. like
>
>  ];/home/sykora/CALC/doing/tests/9_r/-xeon4 9_r total        :   9.4317E-01
>  ];/home/sykora/CALC/doing/tests/10_r/-xeon4 10_r       total        :   
> 9.4105E-01
>  ];/home/sykora/CALC/doing/tests/11_r/-xeon4 11_r       total        :   
> 9.3897E-01
>  ];/home/sykora/CALC/doing/tests/12_r/-xeon4 12_r       total        :   
> 9.3685E-01
>  ];/home/sykora/CALC/doing/tests/13_r/-xeon4 13_r       total        :   
> 9.3446E-01
>  ];/home/sykora/CALC/doing/tests/14_r/-xeon4 14_r       total        :   
> 9.3180E-01
>  ];/home/sykora/CALC/doing/tests/15_r/-xeon4 15_r       total        :   
> 9.2890E-01
>  ];/home/sykora/CALC/doing/tests/16_r/-xeon4 16_r       total        :   
> 9.2589E-01 ,
>
> which quite surprised me... Can you tell me why this happens? I am running 
> p9p.

You've got the cd implementation from label(1) loaded.
In interactive mode, it echos escape codes that are
supposed to update the label in your terminal window.
Instead it wrote them to the redirected file.

I changed label to write to /dev/tty explicitly, which should
avoid this problem.

Russ

Reply via email to