Pattern to match date in YYYY-MM-DD format on Linux machine


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Pattern to match date in YYYY-MM-DD format on Linux machine
# 1  
Old 01-06-2018
Pattern to match date in YYYY-MM-DD format on Linux machine

Hi Expert,

Request your help.
For date validation in csv file, i have written below code for linux machine
I want the date to be in format 2017-05-11(YYYY-MM-DD), if not present in this format the error should be printed.
Could you please help in finding the right pattern to match above date format

Code:
if ($14 !~ /^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/) {print "Error 131: Incorrect DocumentDate pattern", "Field position 14, Linenumber:"NR,$0}

but it is not working and if date is present in correct format then also i am getting the error as below
Code:
Error 131: Incorrect DocumentDate pattern Field position 14, Linenumber:2

# 2  
Old 01-06-2018
If what you showed us is the complete diagnostic message you're getting from the code you showed us, it is complaining when it found a blank (or empty) line in your input file.
# 3  
Old 01-06-2018
Pattern to match date in YYYY-MM-DD format on Linux machine

Hi Don,

Yes this is the problem,
date is present in correct format 2017-11-03 in column but still getting the below error message.
Code:
Error 131: Incorrect DocumentDate pattern Field position 14, Linenumber:2

However error is supposed to appear when column value is empty or date is present in wrong format like this(17-11-03 or 2017-1-03, etc).
# 4  
Old 01-06-2018
Quote:
Originally Posted by as7951
Hi Don,

Yes this is the problem,
date is present in correct format 2017-11-03 in column but still getting the below error message.
Code:
Error 131: Incorrect DocumentDate pattern Field position 14, Linenumber:2

However error is supposed to appear when column value is empty or date is present in wrong format like this(17-11-03 or 2017-1-03, etc).
No! If that is the diagnostic message you're getting, the line that is being processed is a blank line. Note that the code that prints that message displays $0 (i.e., the entire contents of that record) at the end of the output produced by that awk print statement. So, $14 (and every other field in that record) is an empty field and you get the diagnostic message you showed us.
# 5  
Old 01-06-2018
Please show line No. 2 of your input file.
# 6  
Old 01-06-2018
Pattern to match date in YYYY-MM-DD format on Linux machine

Hi Rudic,

Below is the line number 2.

Code:
KE|KE_OUT_B2B_OSR_TT_TT_20171025_V1.0.txt|22||Kar|Outward|KAR|PO|082017|29AAACT2438A1ZP|INV|TA|3010482048|2017-11-03||||1|29AAAC|||M/s H . LTD||||29||||||9984||Tel Ser|||||0.00|0.00|9.00|45.00|9.00|45.00|||||590.00||||||||||

# 7  
Old 01-06-2018
Quote:
Originally Posted by as7951
Hi Rudic,

Below is the line number 2.

Code:
KE|KE_OUT_B2B_OSR_TT_TT_20171025_V1.0.txt|22||Kar|Outward|KAR|PO|082017|29AAACT2438A1ZP|INV|TA|3010482048|2017-11-03||||1|29AAAC|||M/s H . LTD||||29||||||9984||Tel Ser|||||0.00|0.00|9.00|45.00|9.00|45.00|||||590.00||||||||||

If the above is record #2 in your input file, the error message your code would have printed would have been:
Code:
Error 131: Incorrect DocumentDate pattern Field position 14, Linenumber:2 KE|KE_OUT_B2B_OSR_TT_TT_20171025_V1.0.txt|22||Kar|Outward|KAR|PO|082017|29AAACT2438A1ZP|INV|TA|3010482048|2017-11-03||||1|29AAAC|||M/s H . LTD||||29||||||9984||Tel Ser|||||0.00|0.00|9.00|45.00|9.00|45.00|||||590.00||||||||||

instead of what you showed us in post #1 and post #3 in this thread.

But, of course, it is possible that something else (in the code you haven't shown us) cleared $0 before you got to the code you have shown us.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Date format YYYY/MM/DD to DD/MM/YYYY

I am getting output of YYYY-MM-DD and want to change this to DD/MM/YYYY. When am running the query in 'Todd' to_date(column_name,'DD/MM/YYYY') am getting the required o/p of DD/MM/YYYY, But when am executing the same query(Netezza) in linux server(bash) am getting the output of YYYY-MM-DD file... (3 Replies)
Discussion started by: Roozo
3 Replies

2. Shell Programming and Scripting

How to get last 12 month date in YYYY.MM format?

I need the date format in YYYY.MM format and I am able to get current month date as well as previous month date with below command PM=`date +'%Y.%m' -d 'last month'` CM=`date +'%Y.%m' -d 'now'` but I need to get YYYY.MM date format for previous 12 months so could you please help me how I get... (2 Replies)
Discussion started by: Amit Joshi
2 Replies

3. Shell Programming and Scripting

Date Format MM/DD/YYYY

I am changing epoch times to dates. I was able to do the following: echo "$varx" | gawk '{print strftime("%c", $0)}' Mon Dec 31 16:26:40 2012 This changes the epoch date (which is what varx is) into localtime. However, my problem is that I only want 12/31/2012 and not the Mon Dec 31... (2 Replies)
Discussion started by: newbie2010
2 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

need code for date which is in yyyy-mm-dd format

Hi, I am having one log files. contains som data according to date. And it is going to append .Eg:abc.log contains below data 2011-10-19 abjhgj 2011-10-19 gjhgjgj 2011-10-20 hhhjh 2011-10-20 hhhhjj 2011-10-21 gg . . . 2011-11-24 yyy from log files i want catch only... (2 Replies)
Discussion started by: aish11
2 Replies

6. Shell Programming and Scripting

Need date in the format [mm dd yyyy hh AM/PM]

could you please help be on the below code .. Requirement is when i pass the parameter(for below 2) i should get current time -2 hours in the format :wall:.. cur_dt=`$ICEBIN/sqsh -S$DSQUERY -U $BATCHID -P $PASSWD -h -C"select getdate()" | sed '2d'` pr_dt="`$ICEBIN/sqsh -S$DSQUERY -U $BATCHID... (2 Replies)
Discussion started by: karthicss
2 Replies

7. Shell Programming and Scripting

change date format from yyyy/mm/dd to dd/mm/yyyy

(Attention: Green PHP newbie !) I have an online inquiry form, delivering a date in the form yyyy/mm/dd to my feedback form. If the content passes several checks, the form sends an e-mail to me. All works fine. I just would like to receive the date in the form dd/mm/yyyy. I tried with some code,... (6 Replies)
Discussion started by: keyboarder
6 Replies

8. Shell Programming and Scripting

date and time in mm/dd/yyyy hh:mm format

Frens, I have a logfile which has got manier things in it and somewer in that file i have a date in mm/dd/yyyy hh:mm format.... I just need to get the date and time nothing else.... i have searched in this forum for it but got only date in mm-dd-yyyy format.. but i need to search for... (10 Replies)
Discussion started by: smarty86
10 Replies

9. UNIX for Dummies Questions & Answers

Format date from MM/DD/YYYY to YYYYMMDD

I have a file with some date columns in MM/DD/YYYY format: SMPBR|DUP-DO NOT USE|NEW YORK||16105|BA5270715|6/6/2007 |MWERNER|109||||JOHN||SMITH|MD|72211118||||||74559|21 WILMINGTON RD||D|11/6/2003|SL# MD CONTACT-LIZ RICHARDS|||0|Y|N||1411458| And I want to convert the date format to: ... (5 Replies)
Discussion started by: ChicagoBlues
5 Replies

10. Shell Programming and Scripting

create filename with 'DD/MM/YYYY' date format

Hi, I can use the following command to create a file with some name then underscore and then date appended to it in the format 'DD-MM-YYYY': touch "newfile_`date '+%d-%m-%Y'`" But it gives me error when I try with the similar command to create a file with the date format 'DD/MM/YYYY'. I... (4 Replies)
Discussion started by: royalibrahim
4 Replies
Login or Register to Ask a Question