privat@[EMAIL PROTECTED]
wrote:
> On 28 Mrz., 16:59, "uwc...@[EMAIL PROTECTED]
" <uwc...@[EMAIL PROTECTED]
> wrote:
>
>>i have two problems with awk:
>>
>>first, the following works on my system, which shows system usage
>>
>> iostat 2 | awk '{print $1}'
>>
>>However, the following seems never gets written to the log file
>>
>> iostat 2 | awk '{print $1}' > log
(That's a shell issue and off-topic; the reason is the buffering
that is done in case that the output device is no tty. There are
various possibilities to disable buffering (or rather to do line
buffering); on my system, e.g., I can use a program called pty...
iostat 2 | pty awk '{print $1}' >log
>>
>
> Try this instead:
>
> iostat 2|awk '{system("echo " $1 " >>log")}'
>
> (tested and works)
>
>
>>Second problem is that I found it is impossible to send variables to
>>system calls:
>>the following works inside awk script:
>>
>> system( "echo " $0);
>>
>>However, the following never works:
>>
>> BEGIN{ myvar1=0;}
>> { myvar2 =1;
>> system("echo " $myvar1 $myvar2);
Generally I'd try to avoid using system(); if you just want to
print the variables use: print myvar1, myvar2 (Also mind that
in shell echo is an unrealiable, non-portable command.)
>>
>>Any ideas? thanks a bunch
Since myvar2 is 0 and myvar2 is 1 awk will see the system() call as
system("echo " $0 $1);
which might not be what you expect.
>
>
> awk doesn't support "$" before variable names. Try the following:
It *does* support "$" before variable names, but it has a different
meaning than a shell programmer might expect.
Janis
>
> system("echo " myvar1 myvar2)
>
> (tested and works)
>
> Have a nice day
> Robert


|