Sponsored Content
Top Forums UNIX for Beginners Questions & Answers Changing CSV files with date . Subtracting date by values Post 303025402 by arunkumar_mca on Thursday 1st of November 2018 02:28:43 PM
Old 11-01-2018
Changing CSV files with date . Subtracting date by values

Hi All,

I have a CSV file which is as below. Basically I need to take the year column in it and find if the year is >= 20152 . If that is then I should subtract all values by 6. In the below example in description I am having number mentioned as YYWW so I need to subtract those by -5. Whereever I find the year I have ti subtract by -5. If the year is >201601 then I have to subtrct by -6. The year representation is 52 week. so if the week falls on 03 for example 201403 then the subtraction of -6 will yield 201347. I am planning to do in C++ ,not sure if this possible with awk or sed.

Code:
Year representation goes like 
201101
201103
..
..
..
201151
201152
201201
201202

Original
Code:
id,description,type,year,obj
994475,1832 +TRANS     1835 10/17/18,S,201835,P
994477,1836 + NOTAPP 1839 10/17/18,S,201839,1
828058,CONTROL 1452-1527,1552-1627,S,201627,OP
828059,1452-1527,1552-1627,S,201627,UU

Modified
Code:
id,description,type,year
994475,1820 +TRANS     1829 10/17/18,S,201829,P         ---------------------  Year is 2018  should be subtracted by 6
994477,1830 + NOTAPP 1833 10/17/18,S,201833 ,1         ---------------------  Year is 2018  should be subtracted by 6
828058,CONTROL 1436-1521,1546-1621,S,201621,OP  ---------------------  Year is 2016  should be subtracted by 6
828059,1447-1522,1547-1602 ,S,201622,UU ---------------------                Year is 2015  should be subtracted by 5


Last edited by RudiC; 11-01-2018 at 04:24 PM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

subtracting a days from current date

Hi i am trying to subtract days from current date. For example todays date is 10/03/2006. If i subtract 2 days it should give 8/03/2006. I am also trying to find the access date of a file in dd/mm/yyyy format. Can any one please help in how to do this. Ramesh (1 Reply)
Discussion started by: rameshspal
1 Replies

2. Shell Programming and Scripting

Subtracting date / timestamps

I have looked through the forums and found many date / time manipulation tools, but cannot seem to find something that fits my needs for the following. I have a log file with date time stamps like this: Jun 21 17:21:52 Jun 21 17:24:56 Jun 21 17:27:59 Jun 21 17:31:03 Jun 21 17:34:07 Jun... (0 Replies)
Discussion started by: roadcyclist
0 Replies

3. UNIX for Dummies Questions & Answers

Changing Creation Date to a Prespecified Date of a File In Unix

Dear Expert, Is there a command to do that in Unix? In such a way that we don't need to actually "write" or modified the content. -- monkfan (4 Replies)
Discussion started by: monkfan
4 Replies

4. UNIX for Dummies Questions & Answers

adding or subtracting days in the o/p of date

how can we add or subtract days from the output of date command in unix... like if i want to subtract a day from the result of date command like this.. v_date=`date +%Y%m%d` this wud give me 20080519 now i want to subtract one day from this.. so tht it wud give me 20080518.. how do i do... (1 Reply)
Discussion started by: St.Fartatric
1 Replies

5. UNIX for Dummies Questions & Answers

mv folders/files without changing modified date?

Hi all, I'm using Red Hat Linux and want to move some folders and files around but not change the modified date. Is this possible? I know cp has a -p flag which seems to do what I want, but this is a large volume of data so copying and deleting would not be feasible. (13 Replies)
Discussion started by: Annorax
13 Replies

6. Shell Programming and Scripting

SQL one liner for subtracting 1 from date

I got a statement like below to subtract 1 from given date using teradata. I am looking for a one line unix command to perform the same. select 'parse_this_record', (DATE '${FILE_DATE}' - 1) (FORMAT 'YYYY-MM-DD'); Input: 2012-02-21 Expected Output: 2012-02-20 PS: One liner because I am... (2 Replies)
Discussion started by: siteregsam
2 Replies

7. 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

8. Shell Programming and Scripting

Adding/ Subtracting from Date

Hi , How can I add/substruct x number of days with date? For example My_Date=`date` Now I need Hope it's clear. (2 Replies)
Discussion started by: Anupam_Halder
2 Replies

9. Shell Programming and Scripting

Subtracting months from passed Date

Hi All, I am getting a date from environment variable and want to do some processing by subtracting 2 months from the date passed through the environment variable. I am trying the following syntax : date_var=2014-08-31 date_2M_ago='$date_var+"%d%m%y" --$date_var="2 months ago" '... (3 Replies)
Discussion started by: Rahul Raj
3 Replies

10. Shell Programming and Scripting

Subtracting a date based on ls output

I am trying to achieve to get only the month and the day. Example Feb 5 (as you can see if it is feb 1-9) the space is 2. If it is feb 10-28, the space is only 1. I am trying to right a script that will list a directory and shoot an email if there is an activity in last 7 days. I dont really trust... (5 Replies)
Discussion started by: invinzin21
5 Replies
date(1) 						      General Commands Manual							   date(1)

Name
       date - print date and time

Syntax
       date [-c | -u] [ +format ] [[yy[mm[dd]]]hhmm[.ss][-[-]tttt][z]]

Description
       If no argument is given, or if the argument begins with +, the current date and time are printed.  Otherwise, the current date is set.  The
       first mm is the month number; dd is the day number in the month; hh is the hour number (24 hour clock); the second mm is the minute number;
       .ss  the second; -[-]tttt is the minutes west of Greenwich; a positive number means your time zone is west of Greenwich (for example, North
       and South America) and a negative number means it is east of Greenwich (for example Europe); z is a one letter code indicating the dst cor-
       rection mode (n=none, u=usa, a=australian, w=western europe, m=middle europe, e=eastern europe); yy is the last 2 digits of the year number
       and is optional.  The following example sets the date to Oct 8, 12:45 AM:
       date 10080045
       The current year is the default if no year is mentioned.  The system operates in GMT.  The takes care of the conversion to and  from  local
       standard and daylight time.

       If  the	argument begins with +, the output of is under the control of the user.  The format for the output is similar to that of the first
       argument to All output fields are of fixed size (zero padded if necessary).  Each field descriptor is preceded by % and is replaced in  the
       output by its corresponding value.  A single % is encoded by %%.  All other characters are copied to the output without change.	The string
       is always terminated with a new-line character.

Options
       -c     Perform operations using Coordinated Universal Time (UCT) instead of the default local time. The UCT does not use  leap  seconds	so
	      UCT is the same as GMT.

       -u     Perform operations using Greenwich Mean Time (GMT) instead of the default local time.

       + format
	      The following is a list of field Descriptors that can be used in the format (Note: date exits after processing format information) :

		 %a   Locale's abbreviated weekday name

		 %A   Locale's full weekday name

		 %b   Locale's abbreviated month name

		 %B   Locale's full month name

		 %c   Locale's date and time representation

		 %d   Day of month as a decimal number (01-31)

		 %D   Date (%m/%d/%y)

		 %h   Locale's abbreviated month name

		 %H   Hour as a decimal number (00-23)

		 %I   Hour as a decimal number (01-12)

		 %j   Day of year (001-366)

		 %m   Number of month (01-12)

		 %M   Minute number (00-59)

		 %n   Newline character

		 %p   Locale's equivalent to AM or PM

		 %r   Time in AM/PM notation

		 %S   Second number (00-59)

		 %t   Tab character

		 %T   Time (%H/%M/%S)

		 %U   Week number (00-53), Sunday as first day of week

		 %w   Weekday number (0[Sunday]-6)

		 %W   Week number (00-53), Monday as first day of week

		 %x   Locale's date representation

		 %X   Locale's time representation

		 %y   Year without century (00-99)

		 %Y   Year with century

		 %Z   Timezone name, no characters if no timezone

		 %%   %

Examples
       The following command line
       date +%m/%d/%y
       generates the following output
       04/02/89
       The following command line
       date +"DATE: %m/%d/%y%nTIME: %H:%M:%S"
       generates the following output
       DATE: 04/02/89
       TIME: 14:45:05
       The quotes (") are necessary because the format contains blank characters. Use single quotes (') to prevent interpretation by the shell.

Diagnostics
       Failed to set date: Not owner
	    You are not the super-user and you tryed to change the date.  Do not change the date while the system is running in multiuser mode.

Restrictions
       An attempt to set a date to before 1/1/1970 will result in the date being set to 1/1/1970.

Files
       /dev/kmem

																	   date(1)
All times are GMT -4. The time now is 04:18 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy