date field manipulation


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting date field manipulation
# 1  
Old 06-22-2010
date field manipulation

I have a data file. Seperated by "|". The 19 th filed is a date field that occurs like this


11/02/2001

i need to convert into the below format

2001-11-02

for e.g..

i/p

Quote:
1|147431|3284924|Superliner|1652382|765x125||Delta flight|1 x 1 Default Ad, 34|Superliner 765x125|ion|rt|rt|332|0|0.0|Clicks|05/07/2010|0|332|0|0|Y
o/p should be

Quote:
1|147431|3284924|Superliner|1652382|765x125||Delta flight|1 x 1 Default Ad, 34|Superliner 765x125|ion|rt|rt|332|0|0.0|Clicks|2010-05-07|0|332|0|0|Y
can somebody throw some light

I need to do this for all records in the file
# 2  
Old 06-22-2010
First off, your date field is not 19, but rather 18 (based on your sample).
Code:
 nawk -F'|' '{split($18,a,"/");$18=a[3]"-"a[1]"-"a[2]}1' OFS="|" myFile

# 3  
Old 06-22-2010
Thanks Vgresh. Is there a way we can do it in sed. I am using couple of other sed commands on the file. Hence would like to see if we can do it in sed.
# 4  
Old 06-22-2010
Quote:
Originally Posted by dsravan
Thanks Vgresh. Is there a way we can do it in sed. I am using couple of other sed commands on the file. Hence would like to see if we can do it in sed.
Probably, but why bother - use the tool better suited for the task.
Most likely your other sed 'commands' might be migrated to awk.
# 5  
Old 06-22-2010
If you are sure there is only one date field per line in field 18 that needs to be changed, or any other field that contains a date, needs to be changed as well, you can could use this:
Code:
sed 's|\(..\)/\(..\)/\(....\)|\3-\1-\2|g' infile

But like vgersh99 says, awk is more suited for the task. It is more accurate since it will only modify field 18.
# 6  
Old 06-23-2010
Code:
# cat datet
1|147431|3284924|Superliner|1652382|765x125||Delta flight|1 x 1 Default Ad, 34|Superliner 765x125|ion|rt|rt|332|0|0.0|Clicks|05/07/2010|0|332|0|0|Y

Code:
# sed 's@|\([0-9][0-9]\)/\([0-9][0-9]\)/\([0-9][0-9]*\)@|\3-\1-\2@g' datet
1|147431|3284924|Superliner|1652382|765x125||Delta flight|1 x 1 Default Ad, 34|Superliner 765x125|ion|rt|rt|332|0|0.0|Clicks|2010-05-07|0|332|0|0|Y

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Date-Manipulation-1

Hallo Team I can perform the task manually but i would like to automate this process. ok here goes. I have a perl script which runs every Wednesday every week and the name of the script is check_19.pl This is how the script looks like : #!/usr/bin/perl -w #use strict; use DBI; #... (1 Reply)
Discussion started by: kekanap
1 Replies

2. Linux

How do I format a Date field of a .CSV file with multiple commas in a string field?

I have a .CSV file (file.csv) whose data are all enclosed in double quotes. Sample format of the file is as below: column1,column2,column3,column4,column5,column6, column7, Column8, Column9, Column10 "12","B000QRIGJ4","4432","string with quotes, and with a comma, and colon: in... (3 Replies)
Discussion started by: dhruuv369
3 Replies

3. Shell Programming and Scripting

Help with number field manipulation

I have a comma separated file containing numbers, I would like to read the file and divide each number by 1024 and create an output file. Input file : 50312.00,3434.05, ,3433.34,124344.00,434343.00, , , Output file: 49.13,3.35,3.35,0,12.05,424.16,0,0 Please click this link: How to... (2 Replies)
Discussion started by: inditopgun
2 Replies

4. Shell Programming and Scripting

Date manipulation

In my shell script I take date as a input parameter from command line in the format "21 Oct 2011" which would be date +'%d %b %Y' Now i need to do two things here. 1) Validate the date entered by user 2) Calculate yesterday's date from the input. So in this case it should be: "20 Oct 2011"... (9 Replies)
Discussion started by: davidtd
9 Replies

5. Shell Programming and Scripting

Date Manipulation

I have a file with a field containing the following: "7/3/2009 7:07:12 PM","xxxx" I need to be able to split this field up into two into a different format with the time being converted into 24 hour: so that i can get the following: "20090307","19:07:12","xxxx" (8 Replies)
Discussion started by: Pablo_beezo
8 Replies

6. Shell Programming and Scripting

Date manipulation

How can i print a future time, so i get current time by date "+%H:M" but how can i say add 20 minutes to the current time and display as I have just done for current time. (1 Reply)
Discussion started by: kelseyh
1 Replies

7. Shell Programming and Scripting

Date manipulation

Hi Gurus, How to minus 15 minuets from current system time. For example if current time is " Wed Oct 14 12:12:38 BST 2009", i need "Wed Oct 14 11:57:38 BST 2009" Thanks (2 Replies)
Discussion started by: kumarmani
2 Replies

8. Shell Programming and Scripting

date manipulation

HI, I'm comparing my file date with the system date and if both the dates are equal I'm doing some operation. I use two variables for these two dates. I use the following command in my query. if .... But here the current date $cd shows 01 and filedate $fdate shows 1. The file is created on 1 of ... (6 Replies)
Discussion started by: pstanand
6 Replies

9. Shell Programming and Scripting

Date Manipulation

I need to achieve the following.....I seached the forum but could not find it... This is I have in a file... "CH","TIA","10/27/2006",000590 I need the date in the third field to be attached to fileas 20061027_test.txt How do I do it. (6 Replies)
Discussion started by: mgirinath
6 Replies

10. Shell Programming and Scripting

Subtract 100 from first field in long list? Simple manipulation?

It sounds so easy to do. I have a file thats laid out like this.. number text text text text (etc about 15 times with various text fields) I want to take the first field, "number", subtract 100 from it, and then put it back in the file. a simple little manipulation of the first field in... (4 Replies)
Discussion started by: LordJezo
4 Replies
Login or Register to Ask a Question