Replacing Date in the file with Create date and timestamp


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replacing Date in the file with Create date and timestamp
# 1  
Old 09-17-2015
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
imap-home-depot-import.txt


So the file naming convention is:
imap-clientname-import-YYYYMMDD.txt

All I am trying to do is: to get the ClientName and Date from the file name. If the Filename does not have dates in their file name, then we put file create date and time.

Also, the output need to be written in a output file with pipe delimitation if possible.

So the output I am looking for is pipe delimitation: clientname and date


hp | 20150917
dell-gec | 20150901
cvs | 20150915
gec | "need a create file date here"
home-depot | "need a create file date here"


I tried something below to get the date. I am getting the desired output. But how to replace it with create date for the files that does not have dates in the filename.
Code:
ls -1 imap-*.txt | awk -F"." '{print $1}' | awk -F"-" '{print $NF}'

Below is the output I am getting from above code:

20150917
20150901
20150915
import
import


Thanks
# 2  
Old 09-17-2015
Try
Code:
la imap* | awk '
BEGIN   {for (n=split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec", M); n>0; n--) MNr[M[n]]=n
        }
        {sub (/\.txt/,"")
         n=split ($NF, T, "-")
         if (T[n] == "import" || T[n] == "")    {n++
                                                 T[n]=sprintf ("2015%02d%02d", MNr[$6], $7)}
         print T[2] (n==5?"-"T[3]:"") " | " T[n]
        }
'
cvs | 20150915
dell-gec | 20150901
gec | 20150917
home-depot | 20150917
hp | 20150917

# 3  
Old 09-17-2015
Thank you RudiC for the response. I tried the suggested code but getting the error message below. Also, "la" is not a recognizable command hence changed it to "ls -1". I am using Sun Solaris. Sorry for not mentioning it earlier.
Also, the date which I trying to replace is the create date of the file and not the sysdate.


Code:
ls-1 imap* | awk '
BEGIN   {for (n=split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec", M); n>0; n--) MNr[M[n]]=n
        }
        {sub (/\.txt/,"")
         n=split ($NF, T, "-")
         if (T[n] == "import" || T[n] == "")    {n++
                                                 T[n]=sprintf ("2015%02d%02d", MNr[$6], $7)}
         print T[2] (n==5?"-"T[3]:"") " | " T[n]
        }
'

awk: syntax error near line 4
awk: illegal statement near line 4
awk: syntax error near line 8
awk: illegal statement near line 8


Would appreciate any help on this.

Thanks
# 4  
Old 09-17-2015
Quote:
Originally Posted by Saanvi1
Thank you RudiC for the response. I tried the suggested code but getting the error message below. Also, "la" is not a recognizable command hence changed it to "ls -1". I am using Sun Solaris. Sorry for not mentioning it earlier.
Also, the date which I trying to replace is the create date of the file and not the sysdate.


Code:
ls-1 imap* | awk '
BEGIN   {for (n=split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec", M); n>0; n--) MNr[M[n]]=n
        }
        {sub (/\.txt/,"")
         n=split ($NF, T, "-")
         if (T[n] == "import" || T[n] == "")    {n++
                                                 T[n]=sprintf ("2015%02d%02d", MNr[$6], $7)}
         print T[2] (n==5?"-"T[3]:"") " | " T[n]
        }
'

awk: syntax error near line 4
awk: illegal statement near line 4
awk: syntax error near line 8
awk: illegal statement near line 8


Would appreciate any help on this.

Thanks
use nawk on Solaris instead of awk.
Or as an alternative:
Code:
ls -1 imap* | nawk -F "(-import[.]*)|([.])" '{print substr($1,index($1,"-")+1),(NF==2)?"need a create file date here":sqrt($(NF-1)^2)}' OFS='|'

# 5  
Old 09-17-2015
Thank you Vgersh99 for the reply.
It is working fine. The only thing I need in this "need a create file date here" to be replaced by that file creation date on unix system in YYYYMMDD format.

Code:
ls -1 imap* | nawk -F "(-import[.]*)|([.])" '{print substr($1,index($1,"-")+1),(NF==2)?"need a create file date here":sqrt($(NF-1)^2)}' OFS='|'

Thanks again and appreciate your time and help.
# 6  
Old 09-17-2015
Do you have 'stat' on your system?
which stat
# 7  
Old 09-17-2015
Quote:
Originally Posted by vgersh99
Do you have 'stat' on your system?
which stat
Unfortunately I do not have stat.

Would we be able to use ls -Eu and grab the date.

Thanks
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

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

2. Shell Programming and Scripting

Check if a date field has date or timestamp or date&timestamp

Hi, In a field, I should receive the date with time stamp in a particular field. But sometimes the vendor sends just the date or the timestamp or correctl the date&timestamp. I have to figure out the the data is a date or time stamp or date&timestamp. If it is date then append "<space>00:00:00"... (1 Reply)
Discussion started by: machomaddy
1 Replies

3. Shell Programming and Scripting

To get max/min Date/Timestamp from a file

I want to get maximum/minimum date/timestamp from a data file ? Sample Input File ============= rec#,order_dt,ext_ts 1,2010-12-01,2010-12-01 17:55:23.222222 2,2011-11-05,2010-12-01 19:55:23.222222 3,2009-10-01,2010-12-01 18:55:23.222222 for above file Maximum Order_dt = 2011-11-05... (5 Replies)
Discussion started by: vikanna
5 Replies

4. Shell Programming and Scripting

replacing date with a variable in a file

Hi, I've a variable for example.. ACTIVATION_DATE=2010-11-11 (the date above is a result of a sql query and not hardcoded) now there is another file (test_2.parm) where there are many variables predefined.. REG_CODE=111 ACT_DATE=2010-10-10 CAN_DATE=8888-31-12 Now I want to search for... (1 Reply)
Discussion started by: RRVARMA
1 Replies

5. Shell Programming and Scripting

searching a date and replacing with another date

I have a text file that i want to search through and pick out any dates that are formatted like MM/DD/YYYY and replace them with a date i want like 10/29/2009. any idea show i would do this?:) Snapshot of my text file: test4>s44syd5172>070>528>ENU>nongnuan>wanrawee>sr2330532>... (7 Replies)
Discussion started by: infiant
7 Replies

6. AIX

how to grep and compare timestamp in a file with the current date

I want to read a log file from a particular location.In the log file each line starts with timestamp.I need to compare the timestamp in the logfile with the current date.If the timpestamp in the log file is less than 4 hours then i need to read the file from that location.Below is the file... (1 Reply)
Discussion started by: achu
1 Replies

7. AIX

how to grep and compare timestamp in a file with the current date

I want to read a log file from a particular location.In the logfile , lines contains timestamp.I need to compare the timestamp in the logfile with the current date.If the timpestamp in the log file is less than 4 hours then i need to read the file from that location.Below is the file format.Please... (1 Reply)
Discussion started by: achu
1 Replies

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

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

10. Shell Programming and Scripting

Creating file with date/timestamp in it

I need to create a file through a c-shell script which contains only the date and time that the file was created. Does anyone know a simple way to do this? Thank you, Paula (7 Replies)
Discussion started by: ccpjr29
7 Replies
Login or Register to Ask a Question