Talk About Network



Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > Awk > Re: matching co...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 7 of 26 Topic 2199 of 2236
Post > Topic >>

Re: matching column variables from two awks!

by spacegoose <spacegoose@[EMAIL PROTECTED] > Mar 21, 2008 at 01:51 PM

On Mar 21, 3:59 pm, Ed Morton <mor...@[EMAIL PROTECTED]
> wrote:
> On 3/21/2008 11:33 AM, spacegoose wrote:
>
>
>
> > On Mar 21, 10:40 am, Ed Morton <mor...@[EMAIL PROTECTED]
> wrote:
>
> >>On 3/21/2008 9:15 AM, spacegoose wrote:
>
> >>>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
> >>>}'
>
> >>You never use T2, T3, and T4.
>
> >>I asked you to post the df -h output and the contents of MyFile so
we're not
> >>guessing but try this:
>
> >>df -h | sort +5 | awk '
> >>BEGIN {
> >>printf "%-30s%12s%10s%10s\n\n", "File System", "bytes", "capacity",
"accounts"
> >>print
"-------------------------------------------------------------------"}
>
> >>NR==FNR{ accts[$5]++; next }
> >>{ printf "%-30s%12s%10s%10s\n", $6, $2, $5, accts[$6] }' MyFile -
>
> >>If that doesn't do what you want, post what I suggested so we can see
what
> >>you're working with.
>
> >>        Ed.
>
> > Thanks for the help  - the above did not work.
>
> In what way? What did it produce vs what you wanted it to produce?

It seemed to print out my entire myFile (over 100,000 lines). I wanted
to only print the no. of accounts per partition (which that piped
mishmash does).

>
> > Here's the output of my df awk
>
> I'm asking for the output of df, not of "my df awk".



here a snip of df:
/local/ds/xp30(/dev/md/ds/dsk/x30):133896070 blocks 22413779 files
/local/ds/xp6 (/dev/md/ds/dsk/x6):121164266 blocks 22385181 files
/local/ds/xp4 (/dev/md/ds/dsk/x4):129245812 blocks 22194814 files
/local/ds/xp34(/dev/md/ds/dsk/x34):114122034 blocks 22075764 files
/local/ds/xp22(/dev/md/ds/dsk/x22):109638490 blocks 22290938 files
/local/ds/xp8 (/dev/md/ds/dsk/x8):132204190 blocks 22382085 files


>
>
>
>
>
> > File System                          bytes  capacity  accounts
>
> > -------------------------------------------------------------------
> > /                                19G        53%
> > /local/ds/xp0                    200G       71%
> > /local/ds/xp1                    200G       66%
> > /local/ds/xp10                   200G       66%
> > /local/ds/xp11                   200G       68%
> > /local/ds/xp12                   200G       67%
>
> > here's a sample from myFile -
>
> > 611   65114 2008/03/20 15:31 xp0            256000 user/xxx/INBOX
> > 134   4805 2008/03/20 13:41 xp1             256000 user/yyy/INBOX
> > 398   13403 2008/03/19 14:05 xp10            256000 user/zzz/INBOX
> > 367   31508 2008/03/20 15:19 xp11            256000 user/aaa/INBOX
> > 45    1759 2006/02/18 11:05 xp12             256000 user/bbb/INBOX
>
> I don't see the correlation between fields in "myFile" and the "my df
awk"
> output. Show a "myFile" that has some mapping to your df output and tell
us
> which field(s) should be used for that mapping.


Initially, there wasn't since I'm snipping - now I have modified the
above so there is a correlation.



>
>
>
> > Of which:
> > I can  derive the number of accts on each partition (xp#) from this:
> > awk {'print $5'} myFile |sort |uniq -c |sort -nr
>
> Yes, but you can do it without so many pipes and different commands too.
>
> > A sample of its output looks like:
>
> > 2145 xp30
> > 2131 xp3
> > 2129 xp33
> > 2126 xp6
> > 2123 xp32
>
> > I want to get the # in the first column to show up appropriately in
> > the df output (where the partitions, e.g.col2 here, matches col1 - I
> > now see there are /slashes/ to contend with...).
>
> Why would slashes matter?

>
> If you'd like help, just post the output of df (not the output of your
script
> that runs in a chain of pipes), the contents of myFile and your desired
output.

myFile sample is here:
611   65114 2008/03/20 15:31 xp0            256000 user/xxx/INBOX
134   4805 2008/03/20 13:41 xp1             256000 user/yyy/INBOX
398   13403 2008/03/19 14:05 xp10            256000 user/zzz/INBOX
367   31508 2008/03/20 15:19 xp11            256000 user/aaa/INBOX
45    1759 2006/02/18 11:05 xp12             256000 user/bbb/INBOX

desired out:
File System                          bytes  capacity  accounts
-------------------------------------------------------------------
/                                19G        53%       2150
/local/ds/xp0                    200G       71%       2250
/local/ds/xp1                    200G       66%       2167
/local/ds/xp10                   200G       66%       3400
/local/ds/xp11                   200G       68%       4444
/local/ds/xp12                   200G       67%       5000


>
>         Ed.

Thanks!
sg




 26 Posts in Topic:
matching column variables from two awks!
spacegoose <spacegoose  2008-03-20 21:36:28 
Re: matching column variables from two awks!
Ed Morton <morton@[EMA  2008-03-21 00:04:37 
Re: matching column variables from two awks!
spacegoose <spacegoose  2008-03-21 07:15:57 
Re: matching column variables from two awks!
Ed Morton <morton@[EMA  2008-03-21 09:40:47 
Re: matching column variables from two awks!
spacegoose <spacegoose  2008-03-21 09:33:56 
Re: matching column variables from two awks!
Ed Morton <morton@[EMA  2008-03-21 14:59:28 
Re: matching column variables from two awks!
spacegoose <spacegoose  2008-03-21 13:51:43 
Re: matching column variables from two awks!
Ed Morton <morton@[EMA  2008-03-21 16:16:40 
Re: matching column variables from two awks!
spacegoose <spacegoose  2008-03-21 14:00:13 
Re: matching column variables from two awks!
spacegoose <spacegoose  2008-03-21 15:03:17 
Re: matching column variables from two awks!
spacegoose <spacegoose  2008-03-21 16:09:17 
Re: matching column variables from two awks!
Ed Morton <morton@[EMA  2008-03-21 18:32:47 
Re: matching column variables from two awks!
spacegoose <spacegoose  2008-03-21 22:00:21 
Re: matching column variables from two awks!
Ed Morton <morton@[EMA  2008-03-22 07:37:33 
Re: matching column variables from two awks!
spacegoose <spacegoose  2008-03-22 07:37:12 
Re: matching column variables from two awks!
Ed Morton <morton@[EMA  2008-03-22 18:16:25 
Re: matching column variables from two awks!
gazelle@[EMAIL PROTECTED]  2008-03-22 23:23:43 
Re: matching column variables from two awks!
Ed Morton <morton@[EMA  2008-03-22 19:44:09 
Re: matching column variables from two awks!
spacegoose <spacegoose  2008-03-22 22:13:30 
Re: matching column variables from two awks!
Ed Morton <morton@[EMA  2008-03-23 00:41:29 
Re: matching column variables from two awks!
"Rajan" <svr  2008-03-23 17:04:58 
Re: matching column variables from two awks!
Ed Morton <morton@[EMA  2008-03-23 16:50:45 
Re: matching column variables from two awks!
gazelle@[EMAIL PROTECTED]  2008-03-23 22:19:40 
Re: matching column variables from two awks!
"Rajan" <svr  2008-03-23 20:58:50 
Re: matching column variables from two awks!
spacegoose <spacegoose  2008-03-24 08:55:09 
Re: matching column variables from two awks!
Ed Morton <morton@[EMA  2008-03-26 08:13:54 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Fri May 16 6:21:04 CDT 2008.