awk convert date format


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk convert date format
# 1  
Old 04-18-2013
awk convert date format

Could you tell me how to convert the following dates?

If I have m/d/yyyy, I want to have
0m/0d/yyyy. I want my dates to always be 8 digits.

In other words, I want a 0 inserted whenever the month or day is a single digit.

My issue is first I need to use FS="," to get field $4 for the date portion,
within that I need to redefind FS="/" to evaluate the mm and dd portions.

Thanks,
brunc

ex. data
Code:
,,,12/6/2012,Harry H,Add,Add,Sys_RTH,111.222.333.777
,,,2/6/2012,Carry H,Add,Add,Sys_RTH,111.222.333.777

desired result.
Code:
,,,12/06/2012,Harry H,Add,Add,Sys_RTH,111.222.333.777
,,,02/06/2012,Carry H,Add,Add,Sys_RTH,111.222.333.777


Last edited by Franklin52; 04-20-2013 at 10:54 AM.. Reason: Please use code tags
# 2  
Old 04-18-2013
Code:
awk -F'[,/]' '{$4=sprintf("%02d/%02d/%d",$4,$5,$6)}1' OFS=, file

# 3  
Old 04-18-2013
Code:
awk -F, '{split($4,a,/\//);$4=sprintf("%02d/%02d/%s",a[1],a[2],a[3])}1' OFS=, file

@Yoda, that's assuming that the first 3 comma-separated fields never have any slashes.
And still its a broken solution.

Last edited by elixir_sinari; 04-18-2013 at 02:56 PM..
This User Gave Thanks to elixir_sinari For This Post:
# 4  
Old 04-18-2013
My bad, that solution has some gaps, try this instead:
Code:
awk -F, '{ split($4,A,"/"); $4=sprintf("%02d/%02d/%d",A[1],A[2],A[3])}1' OFS=, file

---------- Post updated at 12:46 ---------- Previous update was at 12:44 ----------

Thanks elixir. I noticed that later.
# 5  
Old 04-18-2013
The first three fields will not have any slashes, so Yoda's solution works to a point.
Thanks.
But additional month and year are inserted where they shouldn't be.

data:
,,,12/6/2012,Harry H,Add,Add,Sys_RTH,111.222.333.777
,,,2/6/2012,Carry H,Add,Add,Sys_RTH,111.222.333.777


nawk -F'[,/]' '{$4=sprintf("%02d/%02d/%d",$4,$5,$6)}1' OFS=, data

,,,12/06/2012,6,2012,Harry H,Add,Add,Sys_RTH,111.222.333.777
,,,02/06/2012,6,2012,Carry H,Add,Add,Sys_RTH,111.222.333.777
# 6  
Old 04-18-2013
Quote:
Originally Posted by wbrunc
The first three fields will not have any slashes, so Yoda's solution works to a point.
Thanks.
But additional month and year are inserted where they shouldn't be.
Please use the updated solution, since the first solution that I posted has some issues like the one you mentioned above. Sorry about that.
# 7  
Old 04-18-2013
Worked like a charm, thank you both !Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Sed/awk command to convert number occurances into date format and club a set of lines

Hi, I have been stuck in this requirement where my file contains the below format. 20150812170500846959990854-25383-8.0.0 "ABC Report" hp96880 "4952" 20150812170501846959990854-25383-8.0.0 End of run 20150812060132846959990854-20495-8.0.0 "XYZ Report" vg76452 "1006962188"... (6 Replies)
Discussion started by: Chinmaya Kabi
6 Replies

2. Shell Programming and Scripting

Convert date format

Hi guys I am looking to convert this kind of entry in a txt file 26/04/2008 to April 2008 Note : this is not using the date command , these are date entries in a file can i do this with sed ? Use code tags, thanks. (5 Replies)
Discussion started by: johnnybananas
5 Replies

3. Shell Programming and Scripting

Convert Date Format

Hello, I want to change the format of date value in variable. e.g. cur_date = '2013/03/13 14:24:50' (yyyy/mm/dd hh24:mi:ss) I want to change this to '13-MAR-2013 14:24:50 Following code coverts the current date to format I am looking for. But I do not know how this can be done for a date... (8 Replies)
Discussion started by: cartrider
8 Replies

4. Shell Programming and Scripting

Convert any date format into yyyy/mm/dd

How can I convert any user inputted date into yyyy/mm/dd ? For example user can input date one of the following 20120121 , 2012-01-21 ,01/21/2012,01/21/2012 etc But I need to convert any of the date entered by user into yyyy/mm/dd (2012/01/2012). Any suggestion. Thanks in advance this is... (1 Reply)
Discussion started by: ZeroHedge
1 Replies

5. Shell Programming and Scripting

Using awk or nawk to convert epoch time to date format

Looking for some help and usually when I do a search this site comes up. Hopefully someone can give me a little direction as to how to use one of these two commands to achieve what I'm trying to do. What am I trying to do? I need to take the time value in epoch format returned from the... (5 Replies)
Discussion started by: minigts
5 Replies

6. Shell Programming and Scripting

convert date format

I've been using this thread: https://www.unix.com/shell-programming-scripting/58675-change-date-dd-mmm-yyyy-mm-dd-yyyy.html and https://www.unix.com/shell-programming-scripting/14655-changing-yyyy-mm-dd-ddmmyy.html and this code: on this format: 05/16/2008 18:30:49 Installation 48985and I'm... (3 Replies)
Discussion started by: dba_frog
3 Replies

7. Shell Programming and Scripting

Convert date to Unix format

Dear Expert How to convert date in format of YYYY-MM-DD HH:MM:SS to unix format using a script or command if avaliable Example "2011-05-15 18:00:00" is converted to 1330970400 I tried to use option d in date command but no use, Im using solaris 10 Thanks a lot (12 Replies)
Discussion started by: yahyaaa
12 Replies

8. Shell Programming and Scripting

convert date format to mysql date format in log file

I have a comma delimited log file which has the date as MM/DD/YY in the 2nd column, and HH:MM:SS in the 3rd column. I need to change the date format to YYYY-MM-DD and merge it with the the time HH:MM:SS. How will I got about this? Sample input 02/27/09,23:52:31 02/27/09,23:52:52... (3 Replies)
Discussion started by: hazno
3 Replies

9. UNIX for Dummies Questions & Answers

Convert date format

Hi All, Need your help in converting a date format in ksh. I'm currently working on SUN os where my script is getting a date from a table. The result returns to ksh in this format: 17-JUL-08 How do i convert this string to a date format like yyyymmdd? I tried #!/bin/ksh d="17-JUL-08"... (5 Replies)
Discussion started by: agathaeleanor
5 Replies

10. Shell Programming and Scripting

convert mmddyy date format to ccyyddd format??

hi, for reading a cobol indexed file i need to convert "mmddyy" date format to "ccyyddd" format. i checked the datecalc and other scripts but couldnt modify them to cater to my need:(... The datecalc gives an output which i believe is the total days till that date, but i want to convert it... (2 Replies)
Discussion started by: Bhups
2 Replies
Login or Register to Ask a Question