Visit The New, Modern Unix Linux Community


Date format change in a csv file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Date format change in a csv file
# 1  
Date format change in a csv file

Hi,

We have csv file where date is coming in MM/DD/YYYY HH:MM:SS (06/23/2015 20:59:12) in multiple places
But we need to change the date format to DD/Mon/YYYY HH:MM:SS (23/Jul/2015 20:59:12) using shell script.

Please let us know how can we achieve the same.
# 2  
What field(s) in the CSV file contains the date(s) to be changed?

Are you just trying to change a particular date, or are you trying to change all dates in the file?

What operating system and shell are you using?

What have you tried?
# 3  
I'm going to assume this is some sort of *nix environment due to the requirement for it to be in shell.
The date command can do this for you:
Code:
date -d "$yourolddateformat" +"%d/%b/%Y %H:%M:%S"

If you need to do this via shell (I'll use bourne as it's the only shell you have on all *nix's), you'll just need to do a little lookup:
Code:
month=`echo "$yourolddateformat" | cut -d '/' -f 1`
day=`echo "$yourolddateformat" | cut -d '/' -f 2`
therest=`echo "$yourolddateformat" | cut -d '/' -f 3`
case $month in
  01)
    monthname="Jan"
    ;;
  02)
    monthname="Feb"
    ;;
  03)
    monthname="Mar"
    ;;
  04)
    monthname="Apr"
    ;;
  05)
    monthname="May"
    ;;
  06)
    monthname="Jun"
    ;;
  07)
    monthname="Jul"
    ;;
  08)
    monthname="Aug"
    ;;
  09)
    monthname="Sep"
    ;;
  10)
    monthname="Oct"
    ;;
  11)
    monthname="Nov"
    ;;
  12)
    monthname="Dec"
    ;;
  *)
    exit 1
    ;;
esac
echo "${day}/${monthname}/$therest"

The date command is tested, the script is not - some debug may be required.
Some editing will be required to make it fit you larger needs of course too but the core should be enough to get you 95% there.
# 4  
Quote:
Originally Posted by Smiling Dragon
I'm going to assume this is some sort of *nix environment due to the requirement for it to be in shell.
The date command can do this for you:
Code:
date -d "$yourolddateformat" +"%d/%b/%Y %H:%M:%S"


That will only work with the GNU date command; -d is not standard.
Quote:
If you need to do this via shell (I'll use bourne as it's the only shell you have on all *nix's), you'll just need to do a little lookup:
Code:
month=`echo "$yourolddateformat" | cut -d '/' -f 1`
day=`echo "$yourolddateformat" | cut -d '/' -f 2`
therest=`echo "$yourolddateformat" | cut -d '/' -f 3`


I doubt that OP is using a system without a POSIX shell, so there's no need for cut:
Code:
IFS=/ read month day year whatever <<.
$yourolddateformat
.

Or, in bash or ksh93:
Code:
IFS=/ read month day year whatever <<< "$yourolddateformat"

---------- Post updated at 10:46 PM ---------- Previous update was at 10:36 PM ----------

Quote:
Originally Posted by dholea
Hi,

We have csv file where date is coming in MM/DD/YYYY HH:MM:SS (06/23/2015 20:59:12) in multiple places
But we need to change the date format to DD/Mon/YYYY HH:MM:SS (23/Jul/2015 20:59:12) using shell script.

Please let us know how can we achieve the same.

I'd strongly recommend changing it to the ISO standard format:
Code:
YYYY-MM-DD_HH:MM:SS

(Strictly speaking, the standard uses T where I used an underscore, but that's a minor variation.)

Last edited by cfajohnson; 07-05-2015 at 02:26 AM..
This User Gave Thanks to cfajohnson For This Post:
# 5  
Quote:
Originally Posted by cfajohnson
[..]

I doubt that OP is using a system without a POSIX shell, so there's no need for cut:
Code:
IFS/ read month day year <<.
$yourolddateformat
.

Or, in bash or ksh93:
Code:
IFS/ read month day year <<< "$yourolddateformat"

[..]
I think you meant to write:
Code:
IFS=/ read month day therest ...

no?
# 6  
Quote:
Originally Posted by Scrutinizer
I think you meant to write:
Code:
IFS=/ read month day therest ...

no?

Indeed. Fixed.
# 7  
Quote:
Originally Posted by cfajohnson
[..]
Code:
IFS=/ read month day year whatever <<.
$yourolddateformat
.

Or, in bash or ksh93:
Code:
IFS=/ read month day year whatever <<< "$yourolddateformat"

[...]
Since the `/' is used as separator, the string can be only divided into three parts, making whatever useless, or in other words, there's no whatever; the year will receive the time as well.
Perhaps a minor modification.
Code:
IFS='/ ' read month day year time <<.
> $yourolddateformat
> .


Last edited by Aia; 07-05-2015 at 03:22 AM..

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #350
Difficulty: Medium
AWK was originally written in 1975 and distributed with Version 6 Unix.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Change date format in a file.

Hi all, I have a file as below, i would like the change the format of the time from "11/7/2019 20:12" to "2019-07-11 20:12:00" in the last coloumn. any awk solution on this. Input: 2,0,695016,1961612,497212,5800804,0,0,161,33,7605,12226,23,10,66,0,0,34,11/7/2019 20:10... (4 Replies)
Discussion started by: Raghuram717
4 Replies

2. Shell Programming and Scripting

Change date format in am/pm in csv files using UNIX

Hi All, I'm new to forum good to hear all. I stuck in converting date format in csv file using unix csv file contains as below ,750,0000000000000000GCJR, ,06/22/2016 14:48:44 I want to convert into as below ,750,0000000000000000GCJR, ,06/22/2016 02:48:44 PM Please reply asap..... (22 Replies)
Discussion started by: Raghureds
22 Replies

3. Shell Programming and Scripting

Need to change date format in a csv file using awk

Example: Input csv file 00245DLS,Sitel Ocala,12/31/2014,18:45,1.00,7.00,0.00,0.00 00245DLS,Sitel Ocala,12/31/2014,19:00,-1.00,-1.00,-1.00,-1.00 00245HB,Charlotte,01/01/2015,00:00,-1.00,-1.00,-1.00,0.00 Output csv file 00245DLS,Sitel Ocala,2014/12/31,18:45,1.00,7.00,0.00,0.00 00245DLS,Sitel... (8 Replies)
Discussion started by: adit
8 Replies

4. Shell Programming and Scripting

Datestamp format 2nd change in csv file (awk or sed)

I have a csv file formatted like this: 2014-08-21 18:06:26,A,B,12345,123,C,1232,26/08/14 18:07and I'm trying to change it to MM/DD/YYYY HH:MM for both occurances. I have got this: awk -F, 'NR <=1 {print;next}{"date +%d/%m/%Y\" \"%H:%m -d\""$1 "\""| getline dte;$1=dte}1' OFS="," test.csvThis... (6 Replies)
Discussion started by: say170
6 Replies

5. Shell Programming and Scripting

How to change the format of the date column in a flat file?

Hi, i have a flat file namely temp.txt with this data below ID|name|contact_date 101|Kay|2013-12-26 102|let|2013-12-26 I need to modify the date data in the flat file into MM/DD/YYYY HH24:MI:SS format let me know the code for this. Thank you! (5 Replies)
Discussion started by: srikanth_sagi
5 Replies

6. Shell Programming and Scripting

Changing date format in CSV file

I have a CSV file with a date format like this; 11/19/2012 17:37:00,1.372,121.6 11/19/2012 17:38:00,0.743,121.6 Want to change the time stamp to seconds after 1970 so I can get the data in rrdtool. For anyone interested, this is data from a TED5000 unit and is Kwatts and volts. Needs to... (3 Replies)
Discussion started by: ottsm
3 Replies

7. Shell Programming and Scripting

File date format how to change

Hi All, Below are the unix files taken by the help of ls -lrt -rw-r--r-- 1 kbehera Domain Users 293 Jul 27 13:33 sand.txt -rw-r--r-- 1 kbehera Domain Users 4 Jul 27 13:37 sand1.txt -rw-r--r-- 1 kbehera Domain Users 293 Jul 27 15:30 new_sand.txt -rw-r--r-- 1 kbehera Domain Users 0 Jul 27... (2 Replies)
Discussion started by: krupasindhu18
2 Replies

8. Shell Programming and Scripting

How to change date format in file

Hello! I have a textfile that look like this: "83d1:46:2b";"20091008190000";"Rögle BK - Skellefteå";"Swedish" "d4c:46:21";"20091008190000";"Södertälje - Brynäs";"Swedish" "d4b:46:2";"20091008190000";"HV 71 - Färjestad";"Swedish" "838:46:b";"20091010160000";"Skellefteå - HV 71";"Swedish"... (2 Replies)
Discussion started by: condmaster
2 Replies

9. Shell Programming and Scripting

Format a date in a csv file

So I have a csv file where the 3rd field is a date string in the format yyyy-mm-dd. I need to change it to mm/dd/yyyy. So each line in the csv file looks like: StringData,StringData,2009-02-17,12.345,StringData StringData,StringData,2009-02-16,65.789,StringData Any idea how I can keep... (5 Replies)
Discussion started by: rpiller
5 Replies

10. Shell Programming and Scripting

script to change the date format in a file

i have many files with date format of 6-9-2008 and i want a script that can change the format to 2008-06-09 Thanks (15 Replies)
Discussion started by: shehzad_m
15 Replies

Featured Tech Videos