Re: How to extract *and reorder* columns?

[email protected] (Bob Proulx)
Newsgroups gmane.comp.gnu.utils
Message-ID <[email protected]>
kj wrote:
> I need to extract and reorder some columns from some very large
> files.  GNU cut will extract the columns nicely and quickly, but
> won't reorder them.  I can do the reordering easily by piping the
> output of cut through a perl one-liner, but I'm looking for something
> faster.
> 
> Is there a GNU utility that will do this?

Not just GNU but POSIX standard.  Use awk.

  echo one two three four | awk '{print $3, $2, $1, $4}'
  three two one four

NF is the number of fields on the line.  Therefore $NF is the last
field on the line.  This is a common idiom.

  echo one two three four | awk '{print $NF}'
  four

Therefore $(NF-1) is the next from last and so forth.  This allows
selecting from the end of the line.

  echo one two three four | awk '{print $(NF-1)}'
  three

Bob
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.