Thread

  1. psql -P doesn't honor backslash escapes

    PostgreSQL Bugs List <pgsql-bugs@postgresql.org> — 2000-10-06T13:18:54Z

    Mark Hollomon (mhh@mindspring.com) reports a bug with a severity of 3
    The lower the number the more severe it is.
    
    Short Description
    psql -P doesn't honor backslash escapes
    
    Long Description
    The interactive command psql command:
    \pset fieldsep '\t'
    can be used to set the field separator to a tab character.
    
    The equivalent commandline option:
    psql -P fieldsep='\t'
    sets it to the literal '\t'
    
    Sample Code
    $ ~/pgsql/bin/psql -P format=u -P fieldsep='\t' -P tuples_only -c 'select * from flag_stats order by date' metrics
    
    2000-10-05 10:06:58-04\t18\t13\t13\t4
    2000-10-05 10:26:53-04\t19\t14\t14\t5
    2000-10-05 10:46:33-04\t19\t13\t13\t5
    
    
    No file was uploaded with this report
    
    
    
  2. Re: psql -P doesn't honor backslash escapes

    Peter Eisentraut <peter_e@gmx.net> — 2000-10-06T15:58:07Z

    pgsql-bugs@postgresql.org writes:
    
    > The interactive command psql command:
    > \pset fieldsep '\t'
    > can be used to set the field separator to a tab character.
    > 
    > The equivalent commandline option:
    > psql -P fieldsep='\t'
    > sets it to the literal '\t'
    
    The expansion of \t to tab is done by the parser that processes the input
    lines.  If you pass arguments on the command line, it doesn't apply.  
    That might seem odd, but it's consistent with behaviour of regular shells.  
    E.g.,
    
    $ sh -c "echo $FOO"	# The $FOO is expanded by the current shell.
    
    $ sh
    $ echo $FOO		# The $FOO is expanded by the subshell.
    
    So, to pass a tab via the psql command line, you have to convince your
    shell to do it.
    
    -- 
    Peter Eisentraut      peter_e@gmx.net       http://yi.org/peter-e/