[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