Subject: Re: bug#7076: closed (Re: bug#7076: Command required)

From: Bob Proulx <[email-masked]>
Date: Wed, 22 Sep 2010 14:36:37 -0600

Imran Shoaib wrote:
> Thanks for the details, but what if information is to be read from file
> and not from command line pattern?

Then read the data from the file instead of the command line.

> For example from attached file we need to read characters 15 to 22 of
> line 3 and use these characters only as input in any other file. Please
> advise.

For that specific case using 'awk' is easiest for me.  In awk the FNR
variable is "the input record number in the current input file" or the
current line number.  Use it to only take action on the 3rd line of
the file.

  FNR == 3

Then the substr(s,i,n) function next seems easiest.  The substr() function
returns the substr from 's' starting at index position 'i' and
containing at most 'n' characters.  Since $0 is the current line
string we use that.

  substr($0,15,8);  # return characters 15 to 22 of the line.

Then print the result.  Putting that all together yieds this:

  $ printf "one\ntwo\nabcdefghijklmnopqrstuvwxyz\n" | awk 'FNR==3{print substr($0,15,8);}'
  opqrstuv

The command line example was how I developed the case.  Because then
everything is contained in the example and it can be shared.  You were
asking how to read a file.  Most utilities read files in the argument
list.  So to read a file simply place the file in the argument list.

  $ awk 'NR==3{print substr($0,15,8);}' /tmp/sample.txt
  DFLSDJF 

> This E-mail and any files transmitted with it are confidential and

Please do not include such useless and annoying disclaimers in your
email.  The terms are incompatible with a free software mailing list.
If you cannot avoid this because your company adds it for you then
please use one of the many free email providers on the network when
conversing on mailing lists.  Those accounts are free and freely
available and do not include such legal text.  I am unlikely to
respond to subsequent messages if they still include such legal text
in the future.

Bob