Re: [GENERAL] Desperately Seeking Regular Expression

1999-04-27 Thread Adriaan Joubert

I solved something like this recently in perl. It's not terribly
efficient, but it is simple. I'm doing this from memory, so it may need
some debugging. Use something along the lines of

#!/usr/local/bin/perl

while () {
  @a = split /(\")/;
  # This gives you a list with some of the items being double-quotes
  # Now you need to figure out which ones were inside double quotes
  my $b;
  if ($a[0] eq '"') {
# we started with a double quoted string, so join th e 1st 3 fields
# and stick them on the new string
$b = join('',splice(@a,0,3))."\t";
  }
  while (@a) {
$b .= join("\t",split(' ',shift @a))."\t";
# if there is more then we have another double quoted string
$b = join('',splice(@a,0,3))."\t" if @a;
  }
  # Remove the last tab and replace with a newline
  $b =~ s/\t$/\n/;
  print $b;
}

Adriaan



[GENERAL] Desperately Seeking Regular Expression

1999-04-27 Thread Thomas Good

Hi all - 

I am porting a PROGRESS database to PostgreSQL.

I've had success previously doing a port - but from FoxPro which
allows one to dump data delimited by tabs.  Unfortunately, PROGRESS
dumps fields delimited by whitespace rather than tabs and I can find no
documentation on how to alter this behaviour. 

I read the recent post wherein someone used awk to change whitespace
to tabs:   

cat $input | awk '{ print $1"\t"$2"\t"$3"\t"$4"\t"$5"\t" \
$6"\t"$7"\t" }'  $input.out

I am using this with good effect.  However, I run into trouble as
inside my dump file(s) there are doublequoted character strings.
awk is changing the whitespace delimited words inside the char strs
into tab delimited words inside strings.  Ouch.

What follows is my inept effort to get sed on my side as I try to sort
this out:
sed -e 's/" *"/ /g' $input.out  $input.sql 

This is a miserable failure as it simply converts all the tabs back
to whitespace.  I've tried escaping the double quotes in the regex
but then sed changes nothing.

Can someone put me out of my misery?  Anyone have suggestions on a
regular expression that will:

Convert tabs to whitespace *inside* of double quoted strings *only* ???
I don't care if the regex is for sed/awk/perl, whatever, I need to get
the job done!

TIA!

Stuck in Staten Island,
Tom

 North Richmond Community Mental Health Center
  ---
 Thomas Good   tomg@ { admin | q8 } .nrnet.org
 Phone:718-354-5528   
 Fax:  718-354-5056  
 Powered By:   Slackware 3.6  PostgreSQL 6.3.2
  ---
/* Die Wahrheit Ist Irgendwo Da Draussen... */