r_padawan
asked on
create csv using ksh
hi guys, trying to create a csv in ksh,
using 'awk '{print $1" "$14" "$15" "$16" "$17" "$18" "$19}' >> $TMP_FILE' on another set of files I a simple log file with hundreds of lines in like so:
ABC_DEFGHI_16_JKLMNP11.201 01115_0954 12_374.log :09:54:29. 579 cars amount 29, total cars 70
ABC_DEFGHI_16_JKLMNP11.201 01115_0954 12_374.log :09:54:29. 585 cars amount 34, total cars 43
ABC_DEFGHI_16_JKLMNP11.201 01115_0954 12_374.log :09:54:29. 601 cars amount 22, total cars 44
but from the above log file i'm trying to create 2 csv files which looks like so:
date,time,cars amount
15/11/2010,09:54:29,29
15/11/2010,09:54:29,34
15/11/2010,09:54:29,22
and the other one...
date,time,cars amount
15/11/2010,09:54:29.579,29
15/11/2010,09:54:29.585,34
15/11/2010,09:54:29.601,22
could anyone provide an example awk or cut to achieve the above? cheers!
using 'awk '{print $1" "$14" "$15" "$16" "$17" "$18" "$19}' >> $TMP_FILE' on another set of files I a simple log file with hundreds of lines in like so:
ABC_DEFGHI_16_JKLMNP11.201
ABC_DEFGHI_16_JKLMNP11.201
ABC_DEFGHI_16_JKLMNP11.201
but from the above log file i'm trying to create 2 csv files which looks like so:
date,time,cars amount
15/11/2010,09:54:29,29
15/11/2010,09:54:29,34
15/11/2010,09:54:29,22
and the other one...
date,time,cars amount
15/11/2010,09:54:29.579,29
15/11/2010,09:54:29.585,34
15/11/2010,09:54:29.601,22
could anyone provide an example awk or cut to achieve the above? cheers!
Will you accept a Perl solution that you can run from your shell script or command line, r_padawan?
ASKER
yes pearl is good ;-)
Is this homework, r_padawan? Tell us all about it.
ASKER
solved with awk...
Hi r_padawan,
Sorry for the delay with this. In case you're still interested, here's a quick & nasty Perl alternative (without the column headings):
What does your awk solution look like?
By the way, I'd suggest you consider the option of generating these 2 output files from the original source, rather than having your awk script (the one in your original post) generate an intermediate file (unless you need that intermediate file for something, of else course). If you need help with doing this, pls post some sample data from the original file, which corresponds to the data you've already provided (which was very useful, by the way!).
Sorry for the delay with this. In case you're still interested, here's a quick & nasty Perl alternative (without the column headings):
perl -ne '($x,$x,$x,$x,$d,$x,$x,$x,$h,$m,$s,$t,$x,$x,$a)=split(/[._:, ]/);$d=~s|(....)(..)(..)|$3/$2/$1|;print "$d,$h:$m:$s,$a\n";warn "$d,$h:$m:$s.$t,$a\n"' $TMP_FILE >file1.csv 2>file2.csv
What does your awk solution look like?
By the way, I'd suggest you consider the option of generating these 2 output files from the original source, rather than having your awk script (the one in your original post) generate an intermediate file (unless you need that intermediate file for something, of else course). If you need help with doing this, pls post some sample data from the original file, which corresponds to the data you've already provided (which was very useful, by the way!).
ASKER
keep it open! :-)
ASKER
I know that generating from the original source would be best but the lines contained in the original files are very very long, i was attempting to make the awk more simple by first chopping down the data into somthing more manageable, I struggle to with awk at the best of times, this was the awk I used (I didn't write this):
awk -F'[ \t,_:.]*' '{print substr($5,7,2)"/"substr($5,5,2)"/"substr($5,1,4)","$9":"$10":"$11"."$12}'
Hi r_padawan,
I see that the awk one-liner above produces only one of the two files you wanted. What about the other file? I also see it has a '\t' in it (that represents a TAB character. If there are no tabs in your input file, you should be able to remove the '\t' from the awk one-liner. If there ARE tabs, tell me where, pls.
What would you like me to do for you now? Some options are, I could:
1. Change my Perl one-liner to put column headings on the output files.
2. Change my Perl one-liner to take input from the original source file. If you want me to do this, pls ATTACH some sample data from the original file, which corresponds to the data you've already provided.
3. Do something else. Tell me.
I see that the awk one-liner above produces only one of the two files you wanted. What about the other file? I also see it has a '\t' in it (that represents a TAB character. If there are no tabs in your input file, you should be able to remove the '\t' from the awk one-liner. If there ARE tabs, tell me where, pls.
What would you like me to do for you now? Some options are, I could:
1. Change my Perl one-liner to put column headings on the output files.
2. Change my Perl one-liner to take input from the original source file. If you want me to do this, pls ATTACH some sample data from the original file, which corresponds to the data you've already provided.
3. Do something else. Tell me.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Simples