help with shell script
Peter Matulis
petermatulis at yahoo.ca
Wed Oct 12 23:36:41 PDT 2005
--- Peter Matulis <petermatulis at yahoo.ca> wrote:
>
> --- Philip Hallstrom <freebsd at philip.pjkh.com> wrote:
>
> > > 1. This gives me the amount of space (kB) taken up by the 10 largest ports:
> > >
> > > $ pkg_info -as | grep ^[0-9] | sort -gr | head -10 | cut -c 1-6
> > >
> > > 2. Using one figure from above list I produce the details of the corresponding port:
> > >
> > > $ pkg_info -as | grep -B3 240695
> > >
> > > Output:
> > > ------------------------------------------------------
> > > Information for linux_base-8-8.0_6:
> > >
> > > Package Size:
> > > 240695 (1K-blocks)
> > > ------------------------------------------------------
> > >
> > > I would like the output of the script to be the above but for all ten ports (~40 lines;
> > insert
> > > a blank line between each?). I know I need some sort of iteration but I am rusty on
> > scripting.
> > > Can anyone help?
> >
> > This should get you close... if you want only the top 10 just add more
> > pipes to the end with sort and head...
> >
> > ----------------------------------------------------
> > #!/bin/sh
> >
> > newline='\
> > '
> >
> > pkg_info -as | \
> > tr '\n' ' ' | \
> > sed -e 's/Package Size://g' \
> > -e "s/(1K-blocks)/$newline/g" |\
> > sed -e 's/^ *Information for //'
> > ----------------------------------------------------
>
> What I need is the size as the first item (not the second) on each line. Then I can use
> sort.
Allrighty, I employed some awk to get a good enough output:
----------------------------------------------------
#!/bin/sh
newline='\
'
pkg_info -as | \
tr '\n' ' ' | \
sed -e 's/Package Size://g' \
-e "s/(1K-blocks)/$newline/g" | \
tr ':' ' ' | \
awk '{print$4," ",$3}' | \
sort -gr | \
head -30
----------------------------------------------------
Thanks.
__________________________________________________________
Find your next car at http://autos.yahoo.ca
More information about the freebsd-questions
mailing list