l i n u x - u s e r s - g r o u p - o f - d a v i s
Next Meeting:
July 7: Social gathering
Next Installfest:
Latest News:
Jun. 14: June LUGOD meeting cancelled
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


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...


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 mailing list

LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
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:
Appahost Applications
For a significant contribution towards our projector, and a generous donation to allow us to continue meeting at the Davis Library.