[prev in list] [next in list] [prev in thread] [next in thread] 

List:       postgresql-general
Subject:    Re: [HACKERS] bug in PG_VERSION_NUM patch
From:       Andrew - Supernews <andrew+nonews () supernews ! com>
Date:       2006-02-28 23:25:09
Message-ID: slrne09mul.5md.andrew+nonews () atlantis ! supernews ! net
[Download RAW message or body]

On 2006-02-28, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
>> OK, I reread the manual page:
>
>>        As  each input record is read, gawk splits the record into
>>        fields, using the value of the FS variable  as  the  field
>>        separator.   If FS is a single character, fields are sepa-
>>        rated by that character.  If FS is the null  string,  then
>>        each  individual character becomes a separate field.  Oth-
>>        erwise, FS is expected to be a  full  regular  expression.
>
> Hpmh.  The HPUX man page for plain awk says
>
>           -F fs          Specify regular expression used to separate
>                          fields.  The default is to recognize space and tab
>                          characters, and to discard leading spaces and
>                          tabs.  If the -F option is used, leading input
>                          field separators are no longer discarded.
>
> which makes me think we are treading on mighty thin ice here --- there
> are lots of different versions of awk around, and some of them are
> probably going to treat -F '.' as a regexp.

Nope. Both the widespread awks (gawk and the "true awk") treat -F.
exactly as it is defined in the standard: the value "." is assigned to FS,
which is treated as a regexp only if it is more than one character long.

It is true that this aspect of FS isn't always made clear in manpages; note
that FS=" " (the default) also has a special meaning.

The relevent text from the spec:

 An extended regular expression can be used to separate fields by
 using the -F ERE option or by assigning a string containing the
 expression to the built-in variable FS. The default value of the
 FS variable shall be a single <space>. The following describes FS
 behavior:
  1. If FS is a null string, the behavior is unspecified.
  2. If FS is a single character:
   a. If FS is <space>, skip leading and trailing <blank>s; fields
      shall be delimited by sets of one or more <blank>s.
   b. Otherwise, if FS is any other character c, fields shall be
      delimited by each single occurrence of c.
  3. Otherwise, the string value of FS shall be considered to be an
     extended regular expression.  Each occurrence of a sequence
     matching the extended regular expression shall delimit fields.

-- 
Andrew, Supernews
http://www.supernews.com - individual and corporate NNTP services

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
       subscribe-nomail command to majordomo@postgresql.org so that your
       message can get through to the mailing list cleanly

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic