Sponsored Content
Top Forums Shell Programming and Scripting Check if a date field has date or timestamp or date&timestamp Post 302602073 by durden_tyler on Saturday 25th of February 2012 10:29:27 PM
Old 02-25-2012
Quote:
Originally Posted by machomaddy
...
If it is date then append "<space>00:00:00" to it.
If it is a time stamp, store the data in a different file(invalid_dttmstmp.txt) and remove from this file.
If it is a date timestamp then do nothing.
Input file:
Code:
File1
====
Field 1
=====
00:00:00
<space>01:01:01
2012-02-25 00:30:14
2012-02-25

Expected output
Code:
File1
====
Field 1
=====
2012-02-25 00:30:14
2012-02-25 00:00:00

invalid_dttmstmp.txt
===============
Field 1
======
00:00:00
<space>01:01:01

...
Here's a Perl program that does all that.

Code:

$
$ cat -n file1
     1  Field 1
     2  =====
     3  00:00:00
     4   01:01:01
     5  2012-02-25 00:30:14
     6  2012-02-25
$
$ cat -n process_dates.pl
     1  #!perl -w
     2  use File::Copy;
     3  my $orig = "file1";                # the original file
     4  my $bkup = "file1.bak";            # the backup, just in case
     5  my $temp = "file1.tmp";            # valid records go here
     6  my $invl = "invalid_dttmstmp.txt"; # and invalid go here
     7  copy ($orig, $bkup)  or die "Can't back up original file: $!";
     8  open (V, ">", $temp) or die "Can't open $temp for writing: $!";
     9  open (I, ">", $invl) or die "Can't open $invl for writing: $!";
    10  open (F, "<", $orig) or die "Can't read original file $orig: $!";
    11  while (<F>) {
    12    if (/^(Field|=+)/) {print I $_; print V $_}
    13    elsif (/^\s*\d+:/) {print I $_}
    14    elsif (/^\d{4}-\d\d-\d\d$/) {chomp; print V "$_ 00:00:00\n"}
    15    elsif (/^\d{4}-\d\d-\d\d\s+\d\d:\d\d:\d\d$/) {print V $_}
    16  }
    17  close (V)    or die "Can't close $temp: $!";
    18  close (I)    or die "Can't close $invl: $!";
    19  rename ($temp, $orig);
$
$ perl process_dates.pl
$
$ # check the backup file
$ cat -n file1.bak
     1  Field 1
     2  =====
     3  00:00:00
     4   01:01:01
     5  2012-02-25 00:30:14
     6  2012-02-25
$
$ # check the original file
$ cat -n file1
     1  Field 1
     2  =====
     3  2012-02-25 00:30:14
     4  2012-02-25 00:00:00
$
$ # check the invalid data file
$ cat -n invalid_dttmstmp.txt
     1  Field 1
     2  =====
     3  00:00:00
     4   01:01:01
$
$

tyler_durden
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

get a file date/timestamp

Could someone tell me how to get the date/time (to the second) a file was last modified? I need to know if a file was modified in the last 30 seconds from the system date. I'm on AIX/unix 4.3 (3 Replies)
Discussion started by: alex31
3 Replies

2. UNIX for Dummies Questions & Answers

getting date from timestamp

Hi All, i have a time stamp. from that i am trying to awk to get the year, month and date. TIME=20060614092446 DESIRED OUTPUT: 20060614 i am doing the following; TIME=20060614092446 $ TimeStarted=`expr match '$TIME' '.*\(......\)'` echo $TimeStarted i am not getting... (2 Replies)
Discussion started by: pavan_test
2 Replies

3. UNIX for Dummies Questions & Answers

vmstat output with date & timestamp

Hello all This is a sample vmstat output ... $ vmstat 2 2 kthr memory page disk faults cpu r b w swap free re mf pi po fr de sr hx hx hx hx in sy cs us sy id 1 0 0 23105784 7810488 323 767 1742 5 5 0 0 0 0 0 0 683 780 457 43 ... (9 Replies)
Discussion started by: luft
9 Replies

4. Shell Programming and Scripting

File renaming with date timestamp

Hi, This is my script: #! /usr/bin/ksh cd /app/chdata/workflow/suppl/esoutput/spd/testing for file in /app/chdata/workflow/suppl/esoutput/spd/testing do sort *.txt | awk '{ file=substr($0,1,2)".txt"; print >> file }' ... (3 Replies)
Discussion started by: Sunitha_edi82
3 Replies

5. Shell Programming and Scripting

Timestamp & date

Hi, I have list of files as below, with prefix named as date & time. Anyone how to transform each file as below to yyyy-mm-dd hh:mm:ss Regards, (8 Replies)
Discussion started by: rauphelhunter
8 Replies

6. Shell Programming and Scripting

Timestamp to date conversion in ksh

Hi, I have a file containing timestamp( Example given below). How can i get date(mmd-dd-yyyy) from it? ($> cat file1.txt 2008-11-24 05:17:00.7043) Thanks, Sri (2 Replies)
Discussion started by: srilaxmi
2 Replies

7. UNIX for Dummies Questions & Answers

Unix timestamp to readable date

How would I convert a unix timestamp such as "1232144092" to a readable date such as "1/16/2009 10:14:28 PM" ? I thought I could use date, but I don't think so now.. Any help would be great!! (4 Replies)
Discussion started by: Rhije
4 Replies

8. Shell Programming and Scripting

How to convert date and timestamp?

Hi, I have a file file1 having data as below 20110501,070742, ,012345678909,09999999999,68.5, 20110501,070236, ,089375855455,09376383333,374.3, 20110501,070525, ,090345895555,08444233444,206.2, 20110501,230051, ,000934744433,07624262223,480.1, First field is date(YYYYMMDD) and second... (5 Replies)
Discussion started by: vsachan
5 Replies

9. Shell Programming and Scripting

File Timestamp and date comparsion

Hi, I have many files in the source directory but I need to process with the latest timestamp file. I am using linux operating system. i want extract the file created timestamp( Ext_File_create_date=) With this format YYYYMMDD- i have searched the relevent command in the unix forms but did... (5 Replies)
Discussion started by: onesuri
5 Replies

10. Shell Programming and Scripting

Replacing Date in the file with Create date and timestamp

Hello, I have files that with a naming convention as shown below. Some of the files have dates in the file name and some of them don't have dates in the file name. imap-hp-import-20150917.txt imap-dell-gec-import-20150901.txt imap-cvs-import-20150915.txt imap-gec-import.txt... (8 Replies)
Discussion started by: Saanvi1
8 Replies
GMSTRFTIME(3)								 1							     GMSTRFTIME(3)

gmstrftime - Format a GMT/UTC time/date according to locale settings

SYNOPSIS
string gmstrftime (string $format, [int $timestamp = time()]) DESCRIPTION
Behaves the same as strftime(3) except that the time returned is Greenwich Mean Time (GMT). For example, when run in Eastern Standard Time (GMT -0500), the first line below prints "Dec 31 1998 20:00:00", while the second prints "Jan 01 1999 01:00:00". PARAMETERS
o $format - See description in strftime(3). o $timestamp - The optional $timestamp parameter is an integer Unix timestamp that defaults to the current local time if a $timestamp is not given. In other words, it defaults to the value of time(3). RETURN VALUES
Returns a string formatted according to the given format string using the given $timestamp or the current local time if no timestamp is given. Month and weekday names and other language dependent strings respect the current locale set with setlocale(3). EXAMPLES
Example #1 gmstrftime(3) example <?php setlocale(LC_TIME, 'en_US'); echo strftime("%b %d %Y %H:%M:%S", mktime(20, 0, 0, 12, 31, 98)) . " "; echo gmstrftime("%b %d %Y %H:%M:%S", mktime(20, 0, 0, 12, 31, 98)) . " "; ?> SEE ALSO
strftime(3). PHP Documentation Group GMSTRFTIME(3)
All times are GMT -4. The time now is 10:58 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy