Changing the date format


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Changing the date format
# 1  
Old 03-01-2012
Changing the date format

Hi all,

I have a file with below data
Code:
af23b|11-FEB-12|acc7
ad23b|12-JAN-12|acc4
as23b|15-DEC-11|acc5
z123b|18-FEB-12|acc1

I need the output as below:-(date in yyyymmdd format)
Code:
af23b|20120211|acc7
ad23b|20120112|acc4
as23b|20111215|acc5
z123b|20120218|acc1

Please help me on this.
Thanks in adv.


Moderator's Comments:
Mod Comment How to use code tags

Last edited by Franklin52; 03-01-2012 at 03:10 AM.. Reason: Please use code tags for code and data samples, thank you
# 2  
Old 03-01-2012
If you have GNU date, try this:
Code:
while IFS='|' read a b c; do echo "$a|`date -d$b +%Y%m%d`|$c"; done < inputfile

This User Gave Thanks to balajesuri For This Post:
# 3  
Old 03-01-2012
Dear Balajesuri,

Thanks for your reply. I have used the below command, but it is not working , i have korn shell, please help me for this..
Code:
awk '{while IFS='|' read a b c; do echo "$a|`date -d$b +%Y%m%d`|$c"; done}' < inputfile


Or , please give me a command which will convert the date 11-JAN-12 to 20120111

thanks

Last edited by Franklin52; 03-01-2012 at 03:10 AM.. Reason: Please use code tags for code and data samples, thank you
# 4  
Old 03-01-2012
Quote:
Originally Posted by gani_85
\i have korn shell, please help me for this..

awk '{while IFS='|' read a b c; do echo "$a|`date -d$b +%Y%m%d`|$c"; done}' < inputfile
It's not working because you put that thing in an awk statement. Just put it as is on command line (ofcourse by substituting the filename to whatever contains your input)

Also, check if you have GNU date using this command: date --version
This User Gave Thanks to balajesuri For This Post:
# 5  
Old 03-01-2012
Dear Balajesuri,

No, i dont have GNU date.
I am working in AIX system
# 6  
Old 03-01-2012
Code:
#! /usr/bin/perl -w
use strict;

open I, "< inputfile";
for (<I>) {
    chomp;
    my @x = split /\|/;
    $x[1] = parse_date ($x[1]);
    print join ('|', @x), "\n";
}
close I;

sub parse_date {
    my $t = shift;
    my @d = split /-/, $t;
    my %mnths = (   "JAN" => "01", "FEB" => "02", "MAR" => "03", "APR" => "04", "MAY" => "05", "JUN" => "06",
                    "JUL" => "07", "AUG" => "08", "SEP" => "09", "OCT" => "10", "NOV" => "11", "DEC" => "12" );
    for (keys %mnths) { if ($d[1] eq $_) { $d[1] = $mnths{$_}; last } }
    return "20$d[2]$d[1]$d[0]";
}

I've hard-coded it to print "20" for the first 2 digits of year assuming you won't have to deal with the last or next century for now, atleast.

And, please start your posts by mentioning which system and shell you're working on. It helps in getting quicker answers.
This User Gave Thanks to balajesuri For This Post:
# 7  
Old 03-01-2012
I know its dirty but worth to post.

Code:
$ mth=JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC
$ awk -F\| -v mlist=$mth '{split($2,A,"-") ;printf("%s|20%d%02d%d|%s\n", $1,A[3],(index(mlist,A[2])+2)/3,A[1],$3)}' x
af23b|20120211|acc7
ad23b|20120112|acc4
as23b|20111215|acc5
z123b|20120218|acc1
$


You having all caps in month name. Therefore my string looks dirty.
With standard 3 letters name, its looks "JanFebMarAprMayJunJulAugSepOctNovDec". Somewhat meaningful.
This User Gave Thanks to clx For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Changing date format

how do i change the following to show me what the date was 7 days ago? date +%Y-%m-%d (1 Reply)
Discussion started by: SkySmart
1 Replies

2. Shell Programming and Scripting

Changing Date Format

How can i make the date command output yesterday's date, current date and the date 4 days ago, in the following format: 2012-10-03 code: date +% ???? (3 Replies)
Discussion started by: SkySmart
3 Replies

3. UNIX for Advanced & Expert Users

Changing the date format

Hi All, I am new to this forum, could any one help me out in resolving the below issue. Input of the flat file contains several lines of text for example find below: 5022090,2,4,7154,88,,,,,4/1/2011 0:00,Z,L,2 5022090,3,1,6648,88,,,,,4/1/2011 0:00,Z,,1 5022090,4,1,6648,88,,,,,4/1/2011... (0 Replies)
Discussion started by: av_sagar
0 Replies

4. UNIX for Dummies Questions & Answers

Changing from Excel date format to MySQL date format

I have a list of dates in the following format: mm/dd/yyyy and want to change these to the MySQL standard format: yyyy-mm-dd. The dates in the original file may or may not be zero padded, so April is sometimes "04" and other times simply "4". This is what I use to change the format: sed -i '' -e... (2 Replies)
Discussion started by: figaro
2 Replies

5. Shell Programming and Scripting

Changing Date format

How to change a date stored in a variable to YYYYMMDD. Variable output is in DD-MON-YY,required format is 'YYYYMMDD' Thanks, Sud (1 Reply)
Discussion started by: sud
1 Replies

6. Shell Programming and Scripting

Changing date format

Hi, I have a column in a table of Timestamp datatype. For Example : Var1 is the column 2008-06-26-10.10.30.2006. I have Given query as date(var1) and time (var1) I got the file as in the below format : File1: Col1 Col2 2008-06-02|12.36.06 2008-06-01|23.36.35 But the problem is... (7 Replies)
Discussion started by: manneni prakash
7 Replies

7. Post Here to Contact Site Administrators and Moderators

changing the format of date

In my shell script i have a variable which stores date in the format of YYYYMMDD. Is there any way to format this value to MM/DD/YYYY. Thanks. (1 Reply)
Discussion started by: nasirgondal
1 Replies

8. UNIX for Dummies Questions & Answers

Changing the format of date

Hi, There are lots of threads about how to manipulate the date using date +%m %....... But how can I change the default format of the commad date? $ date Mon Apr 10 10:57:15 BST 2006 This would be on fedora and SunOs. Cheers, Neil (4 Replies)
Discussion started by: nhatch
4 Replies

9. Shell Programming and Scripting

Changing date format

Hi, Is there any way to change one date format to another ?? I mean I have a file having dates in the format (Thu Sep 29 2005) ... and i wud like to change these to YYYYMMDD format .. is there any command which does so ?? Or anything like enum which we have in C ?? Thanks in advance, ... (5 Replies)
Discussion started by: Sabari Nath S
5 Replies

10. Shell Programming and Scripting

Changing the date format

Hi, I know there is a Q/A section and lots of posts regarding date command here. I am sorry to start a new thread. I am very new to shell scripting (actually i am working on my first program), so please forgive my ignorance. I could not find an answer to my problem else where so i posted it... (10 Replies)
Discussion started by: Dream86
10 Replies
Login or Register to Ask a Question