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:19

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



Use perl.  =D  You can edit the file in place also:

perl -p -i -e 's/(some regex)\r(some other regex)/${1}X${2}/' test.dat

I say use all the tools available to you, & use the right tool for the 
job.

Foo

On Fri, 4 Jun 2004, 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
> >
> 
> 

_______________________________________________
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:
Appahost Applications
For a significant contribution towards our projector, and a generous donation to allow us to continue meeting at the Davis Library.