l i n u x - u s e r s - g r o u p - o f - d a v i s
L U G O D
 
Next Meeting:
April 21: Google Glass
Next Installfest:
TBD
Latest News:
Mar. 18: Google Glass at LUGOD's April meeting
Page last updated:
2004 Jun 04 16:25

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
Re: [vox-tech] Changing data with awk
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vox-tech] Changing data with awk



In awk you can directly modify individual fields so this should work:

  awk -F^ '{$6=gensub(/\r/,"<cr>","",$6); print}' test.dat

        ...leo

At 03:36 PM 6/4/04, Mark K. Kim wrote:
Unfortunately that wouldn't work since Richard wants to modify the column
in the file, not strip it out at the same time he modifies it... Unless
you know of some way to re-insert the modified column back into the file
(I don't.) Good try, though.

I'm not an awk expert but I'd guess you could do something like:

awk -F^ '{$6=gensub(/\r/,"<cr>","",$6);
printf("%s^%s^%s^%s^%s^%s\n",$1,$2,$3,$4,$5,$6)}' test.dat

I'm sure someone's got a better idea that putting all those %s's...

-Mark

PS: Then there's PERL... =P


On Fri, 4 Jun 2004, Dylan Beaudette wrote:

> > I have a large flat file generated by SQL Loader that I'd like to mess
> > around with; specifically, I'd like to replace all of the carriage returns
> > in one field with some other character, since they're messing up my data
> > load.
> >
> > I figured I'd use awk, since it's a pretty powerful little tool for
> > getting right to the data. If I use:
> >
> > $ awk -F^ {print $6} test.dat
> >
> > I get the field that I want. But how do I change the characters in that
> > field and replace them in test.dat?
>
>
> i recently had a similar problem: trying to convert
> this:
> 1<CR>
> 2<CR>
> 3<CR>
> ...
>
> into this: 1, 2, 3...
>
> here is how i did it:
>
> append a comma+space to the end of each line with sed
> then remove each CR using tr:
>
> sed -e 's/$/, /g' input_file | tr -d "\n" > output_file
>
> so something like this might do the trick:
>
> awk -F^ {print $6} test.dat | sed -e 's/$/, /g' | tr -d "\n" > output_file
>
>
> .. you would be left with one column of data that would have to be
> re-instered into the DB, or added back to the original file.
>
> the command 'paste' might be helpful for appending the data to the
> original...
>
>
> good luck!
>
> Dylan
>
>
> _______________________________________________
> vox-tech mailing list
> vox-tech@lists.lugod.org
> http://lists.lugod.org/mailman/listinfo/vox-tech
>

--
Mark K. Kim
AIM: markus kimius
Homepage: http://www.cbreak.org/
Xanga: http://www.xanga.com/vindaci
Friendster: http://www.friendster.com/user.jsp?id=13046
PGP key fingerprint: 7324 BACA 53AD E504 A76E 5167 6822 94F0 F298 5DCE
PGP key available on the homepage
_______________________________________________
vox-tech mailing list
vox-tech@lists.lugod.org
http://lists.lugod.org/mailman/listinfo/vox-tech
_______________________________________________
vox-tech mailing list
vox-tech@lists.lugod.org
http://lists.lugod.org/mailman/listinfo/vox-tech



LinkedIn
LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
facebook
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
O'Reilly and Associates
For numerous book donations.