Check time stamp formate in file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Check time stamp formate in file
# 1  
Old 09-10-2014
Check time stamp formate in file

I have to check whether last line of the file has time stamp or not.

File.txt
Code:
cong = 0
This formats a date and time into the given strftime() format = 09
Dates can be passed to Smarty as unix timestamps = 56789
mysql timestamps or any string made up =98
Since Smarty-2.6.10 numeric values passed to 46 date_format are always
si.tr_GBL_KIL.lastprocessedTs = 2014-09-10T21:15:25.521423

Code:
echo "2014-09-10" |  awk  
-F '/'
'{print ( $1 >0 && length($1) == 4 && $2 <= 12 && $3 <= 31  ) ? "good" : "bad" }'

This is working in command line. Above will search only for date, I have to check time also

Is there a way to search 'lastprocessedTs' in file and take date/time to validate "2014-09-10T21:15:25.521423"?

some thing like this,
Code:
awk  
-F '/'
'END/lastprocessedTs/ {print ( $1 >0 && length($1) == 4 && $2 <= 12 && $3 <= 31  ) ? "good" : "bad" }' File.txt

lastprocessedTs - To search for this pattern in file
END - And also good if awk validate timestamp present in last line
END && lastprocessedTs
# 2  
Old 09-10-2014
When you say that the following is working from the command line:
Code:
echo "2014-09-10" |  awk  
-F '/'
'{print ( $1 >0 && length($1) == 4 && $2 <= 12 && $3 <= 31  ) ? "good" : "bad" }'

did you mean that the output you want is something like the following?
Code:
usage: awk [-F fs] [-v var=value] [-f progfile | 'prog'] [file ...]
$ -ksh: -F: not found
$ -ksh: {print ( $1 >0 && length($1) == 4 && $2 <= 12 && $3 <= 31  ) ? "good" : "bad" }: not found

Or, did you mean that you used the command:
Code:
echo "2014-09-10" |  awk -F '/' '{print ( $1 >0 && length($1) == 4 && $2 <= 12 && $3 <= 31  ) ? "good" : "bad" }'

and that you always want the output to be bad?

Specifying a field separator of / when the input you're processing doesn't contain that character means that the entire line (up to the trailing newline character) will be field 1. So the length of $1 in every input line in this format will be 10; not 4.

END is a special condition that cannot be combined with any other condition. The actions in an END condition are performed after you have hit EOF on every input file fed into that invocation of awk.

If you want to process the last field on the last line of your input file, that would be something like:
Code:
awk '
{       dts = $NF }
END {   n = split(dts, d, /[-T:.]/)
        # Verify that n==7 and d[1] through d[7] meet your requirements
}' file

If you want to verify that the last field on any line containing lastprocessedTS meets your requirements, that would be something like:
Code:
awk '
/lastprocessedTS/ {   n = split($NF, d, /[-T:.]/)
        # Verify that n==7 and d[1] through d[7] meet your requirements
}' file

This User Gave Thanks to Don Cragun For This Post:
# 3  
Old 09-10-2014
Facebook

This might help you to start
Code:
awk  'function error(v){
		print "invalid "v ; exit
      }

      BEGIN{
		month="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
		split(month,MON,/ /) 
		
      }

      END{
		if(/lastprocessedTs/)
		{ 

			split($NF,D,/[-:T]/) 

			year = D[1] 
			mon  = D[2] 
			day  = D[3] 
			hour = D[4] 
			min  = D[5] 
			sec  = D[6]  

			# put your condition here to validate date like this
			# write your condition for time also...this is just a hint
  
			if( !( day >= 1 && day <=31 ) )
			{
				error("Maximum 31 days ")
			}

			if(! (mon >=1 && mon <=12 ) )
			{
				error("Bad Month range 1-12")
			}
		
			if(!length(year))
			{
				error("Year length should be 4 char")
			}

			if (day == 31 && (mon == 4 ||  mon == 6 || mon == 9 || mon == 11))
      			{
				error(MON[mon]" can have maximum 30 days")
			}

   			if (day >= 30 && mon == 2)
      			{	
				error("Febrary maximum 29 days")	
			}

   			if (mon == 2 && day == 29 && ! (  year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)))
      			{
				error(year " is Not leap year")
			}
   			
			# if none of the above are true then your date and time is valid...
			print "good"	
		}
	  }
     ' file


Last edited by Akshay Hegde; 09-10-2014 at 03:13 AM..
This User Gave Thanks to Akshay Hegde For This Post:
# 4  
Old 09-10-2014
Thanks Don Smilie

On the given example I have miss typed "/" instead of "-"

Now I have checked the fields by using the below.
Code:
awk '
/lastProcessedTs/ { n = split($NF, d, /[-T:.]/)
print ( $n = 7 ) ? "T" : "F" }' file

Other than the above check could you please let know what could I check on "d[1] through d[7] meet your requirements"?
# 5  
Old 09-10-2014
Quote:
Originally Posted by Roozo
Thanks Don Smilie

On the given example I have miss typed "/" instead of "-"

Now I have checked the fields by using the below.
Code:
awk '
/lastProcessedTs/ { n = split($NF, d, /[-T:.]/)
print ( $n = 7 ) ? "T" : "F" }' file

Other than the above check could you please let know what could I check on "d[1] through d[7] meet your requirements"?
Only you know what your requirements are for the various date fields other than the tests you had for $1 through $3 would now be tests for d[1] through d[3]. If you want more comprehensive tests, Akshay's suggestion seems to be good starting point.

Note that you want n == 7; not $n = 7(which sets the sub-seconds field to 7 and prints T rather than printing T if there are 7 subfields and F otherwise.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Capturing time stamp in file name

I have a file that is created via a perl script where the file is named like so: 01-07-2016_10:17:08. I am running a shell script that needs to take this file and print it. I can capture the date portion fine, but I am unsure how to capture the time stamp, since there will be a difference from what... (1 Reply)
Discussion started by: ldorsey
1 Replies

2. Shell Programming and Scripting

To check time stamp in log file and calculate.

Hi Friends, I have the following logfile. i want to make a script for calculate time by time2 - time1 1600266278|random|1|2014-09-19 02:08:56.024|2014-09-19 02:08:59.398|A|B|ROOM|Num0208559970111101788|1|dog|dos 1600266200|random|4|2014-09-19 02:08:06.572|2014-09-19... (2 Replies)
Discussion started by: ooilinlove
2 Replies

3. Shell Programming and Scripting

awk - check time stamp between range or not

I want to check given time stamp is between the given time stamp or not. I am using AIX. YYYYMMDDHHMMSS abc.csv START TIME, END TIME 20130209018000,20130509022000 20120209018000,20130509022000 20120209018000,20130509022000 Script will check given time stamp is between above two range or... (2 Replies)
Discussion started by: vegasluxor
2 Replies

4. Shell Programming and Scripting

Check file time stamp

Hi, I need help to read file in a directory on basis of time stamp. e.g. If file access in last 2 minutes it should not be copy to remote directory. Below is my script. #!/bin/ksh DATE=`date +"%Y-%m-%d_%H%M"` SEPARATER=" " exec < out_interfaces.cfg while read source_path... (10 Replies)
Discussion started by: qamar.alam
10 Replies

5. Shell Programming and Scripting

file time stamp

Hi All, I am facing small problem. i want to print file time stamp on which date file has placed in the server. i have given some code but its not giving the year. any help appreciated. regards rajesh. (4 Replies)
Discussion started by: rajesh_pola
4 Replies

6. Shell Programming and Scripting

Change time stamp of a file

Hi, As i know , we can change the time stamp of a file by touch command, i did change in a file and it is looking as given # ls -l abcd -rw-r--r-- 1 batsoqa sicusers 0 Feb 17 2010 abcd actually i want to see the output like this -rw-r--r-- 1 batsoqa sicusers ... (3 Replies)
Discussion started by: apskaushik
3 Replies

7. Shell Programming and Scripting

change the time stamp of file

can we change the timestamp of a file to old date. -rwxrwxrwx 1 root other 330 Jul 1 16:03 abc.txt it shows creation time is 16.03 can i change it to previous time :) (2 Replies)
Discussion started by: anish19
2 Replies

8. Shell Programming and Scripting

how do i put a time stamp in a file name

i want to copy a filea.dat to a file name in the format of filea_yyyymmdd_hhmi.dat using something like DTSTAMP=$(date "+%Y%m%d"), which puts it in format filea_yyyymmdd.dat (5 Replies)
Discussion started by: jhamm
5 Replies

9. UNIX for Dummies Questions & Answers

time stamp of file create

Hi, Sounds a simple request but I also need (would like) to gather the seconds too. I'm not even sure if this is held. I would think it is, somewhere??!!?! I belive that stat would/could work but I don't do C (we'll not yet). Is there any comamnd line util I can use? SunOS. Cheers... (7 Replies)
Discussion started by: nhatch
7 Replies

10. UNIX for Dummies Questions & Answers

File date and time stamp

I have to capture the creation date and time stamp for a file. The ls command doesn't list all the required information. I need year, month, day, hour, minute and second. Any ideas... (1 Reply)
Discussion started by: Xenon
1 Replies
Login or Register to Ask a Question