On Wed, Jan 09, 2008 at 08:48:38PM +0100, Paul Csanyi wrote: > 2008/1/9, Sergio Cuéllar Valdés <[EMAIL PROTECTED]>: > > 2008/1/9, Paul Csanyi <[EMAIL PROTECTED]>: > > > > 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 > -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]