help-gnu-utils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: awk - Read file inside script.


From: Bob Proulx
Subject: Re: awk - Read file inside script.
Date: Mon, 5 Jan 2009 10:14:25 -0700
User-agent: Mutt/1.5.13 (2006-08-11)

Chris Jones wrote:
> #!/usr/bin/gawk -f
> #-------------------------------------------------------------------------------

If you wish to be kind to people using random text editors then it
would be nice to shorten those marker comment lines by at least one
character so that they do not wrap around terminals.  Some editors put
a line wrap indicator in the last column indicating that the line
displayed is wrapped to the next line.

Also, as long as I am whining (:-) using eight columns for a single
indention level is alot of whitespace!  Of course this is personal
preference and a bike shed discussion but still...

> I have tried numerous things with while .. getfile .. restructuring the
> above, adding a BEGIN section .. and gotten nowhere.

Try my modification of your program.  I used getline to read the file.

Bob

#!/usr/bin/gawk -f
#------------------------------------------------------------------------------
# ./memswap :   display percentage of ram & swap currently in use
#
# usage     :   GNU/screen backtick
#
# notes     :   % ram used  = ((total ram  - used ram)  / total ram)  * 100
#           :   % swap used = ((total swap - used swap) / total swap) * 100
#------------------------------------------------------------------------------
BEGIN {
  while (getline < "/proc/meminfo") {
    if ($1=="MemTotal:")    {mt = $2};      # mt = total ram on system
    if ($1=="MemFree:")     {mf = $2};      # mf = free ram
    if ($1=="Buffers:")     {mb = $2};      # mb = ram used for buffers
    if ($1=="Cached:")      {mc = $2};      # mc = ram used for cache
    if ($1=="SwapTotal:")   {st = $2};      # st = total swap
    if ($1=="SwapFree:")    {sf = $2};      # sf = free swap
  }
  exit;
}
END {
  pmu = (mt-(mf+mb+mc)) * 100 / mt;         # pmu = % of ram  used
  psu = ((st-sf) * 100 / st);               # psu = % of swap used
  printf ("%2.1f %s %2.1f %s\n"), pmu, "%", psu, "%";
}




reply via email to

[Prev in Thread] Current Thread [Next in Thread]