On Mar 21, 12:04 am, Ed Morton <mor...@[EMAIL PROTECTED]
> wrote:
> On 3/20/2008 11:36 PM, spacegoose wrote:
>
>
>
> > i have a program that prints out a formatted df command
> > by sorting and grepping and using awk to print it out.
>
> > it basically executes df -h | grep whatever | sort -n +5 and then
> > awks
> > to a nice printout like:
>
> > disk size capacity
> > ------------------
> > foo 20gb 70%
> > moo 40gb 25%
> > bar 20gb 70%
>
> > i'd like to add a new column "accounts" to this print out.
>
> > the no. of accounts is derived from a command:
> > awk {'print $5'} myFile |sort |uniq -c |sort -nr
>
> > which prints rows like:
>
> > 450 foo
> > 300 moo
> > 104 bar
>
> > i want to integrate this command into the formatted df program's
> > output.
> > i can't figure out how to appropriately append the "account count"
> > column from the myFile command, to the appropriate row of the
> > formatted df output,
> > e.g. where col 1 from the formatted df output matches col 2 of the
> > myFile command.
>
> > so it looks like this:
>
> > disk size capacity accounts
> > ---------------------------
> > foo 20gb 70% 450
> > moo 40gb 25% 300
> > bar 20gb 70% 104
>
> > Thanks for any hints!
> > sg
>
> $ cat file1
> 450 foo
> 300 moo
> 104 bar
>
> $ cat file2
> disk size capacity
> ------------------
> foo 20gb 70%
> moo 40gb 25%
> bar 20gb 70%
>
> $ awk '
> NR==FNR{acct[$2]=$1;next} FNR==1{sfx=" account"} FNR==2{sfx="--------"}
> FNR>2{sfx=" "acct[$1]} {print $0 sfx}' file1 file2
> disk size capacity account
> --------------------------
> foo 20gb 70% 450
> moo 40gb 25% 300
> bar 20gb 70% 104
>
> but I expect there's a much simpler way to get your desired output using
awk on
> your raw output rather than doing all that post-processing with other
tools
> first. If you provide your "df -h" output and "myFile" contents that got
you the
> data above, we could probably help.
>
> Ed.
Thanks Ed,
I definitely want to work with the output rather than files (except
reading from myFile).
Fere's the df awk:
df -h | grep dsk | sort +5 | awk '
BEGIN {
printf("%-30s%12s%10s%10s\n\n", "File System", "bytes", "capacity",
"accounts")
printf("-------------------------------------------------------------------
\n")
T2 = 0
T3 = 0
T4 = 0
}
{
printf("%-30s%12s%10s%10s\n", $6, $2, $5, "# accts")
T2 += $2
T3 += $3
T4 += $4
}'


|