[vox-tech] Changing data with awk

Dylan Beaudette vox-tech@lists.lugod.org
Fri Jun 4 22:31:59 PDT 2004


> 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





More information about the vox-tech mailing list