Re: Vá: awk FIELDWIDTHS howto?
On Wed, Jan 09, 2008 at 08:48:38PM +0100, Paul Csanyi wrote:
> 2008/1/9, Sergio Cuéllar Valdés <herrsergio@gmail.com>:
> > 2008/1/9, Paul Csanyi <csanyipal@gmail.com>:
>
> > > I try to use awk to print second field from a text file
> > > but awk prints a part of 1. field as a 2. field. Why?
> > >
> > > aptitude search ~i | awk '{ NF = "2" } { FIELDWIDTHS = " 4 32 " }
> > > {print $2}' > foltelepitett_debian_csomagok
> > >
> > > less foltelepitett_debian_csomagok
> > >
> > > ..
> > > bsdmainutils
> > > bsdutils
> > > busybox
> > > A
> > > ca-certificates
> > > checksecurity
>
> A record is like these:
>
> i busybox - Tiny utilities for small and embedded syst
> i A bzip2 - high-quality block-sorting file compressor
> |
> 1234123456789etc.
> 1. |2.
I don't know aptitude, but that output can hardly constitute a
"record", since "busybox" is the 2nd field whereas "bzip2" is
the 3rd because of that "A".
> I try to get only the package name from the 2. field.
Which is what you've got: "A" is the second field.
> FIELDWIDTHS = " 4 32 "
I don't know awk, either (What the hell am I doing in this
thread ? :{) and I couldn't find FIELDWIDTH in the awk manpage,
but perhaps it doesn't do what you think it does. Perhaps it
just limits the length of a longer field for output.
> The given width for 1. field (4) should be right, but isn't.
> Awk give me the letter "A" as a 2. field. Why?
Because it is the second field, but since the lines returned
by that aptitude command are inconsistent in format I'm afraid
I can't think of anything you can do about it. If you know
what sort of things might appear where that "A" appears, you
could maybe insert something like
sed -r 's/ [A-Z] //g'
into your command.
>
> > something like this: aptitude search ~i | cut -d" " -f2
> > does this help you ?
>
> No.
>
> --
> Regards, Paul Csanyi
> http://www.freewebs.com/csanyi-pal/index.htm
>
Reply to: