Sponsored Content
Top Forums UNIX for Beginners Questions & Answers Extract date and time part from filename Post 303033690 by Prathmesh on Wednesday 10th of April 2019 08:54:25 AM
Old 04-10-2019
Quote:
Originally Posted by RudiC
This is not easy a request, both to understand and to implement. I have understood that you want to search two input fields, $4 and $5, for date/Ttime format descriptors, and append their metadata to the line. Additional data that shows up in your desired output, as ......, |0|0|, or %Y%m%d are even harder to implement as specified. Try this a a first starting point:


Code:
awk -F"|" '
BEGIN   {MXFM = split ("YYYYMMDD|YYMMDD|HHMISS", FMT)
        }

        {printf "%s", $0
         for (j=4; j<=5; j++)   {TMP = $j
                                 PTR = 0
                                 for (i=1; i<=MXFM; i++) if (match (TMP, FMT[i]))       {printf "|%s|%s|%s|...", PTR + RSTART, RLENGTH, substr (TMP, RSTART, RLENGTH)
                                                                                         TMP = substr (TMP, RSTART+RLENGTH)
                                                                                         PTR += RSTART + RLENGTH - 1
                                                                                        }
                                }
         print ""
        }
'  OFS="|" file
SOURCE|LOGIN|SERVER|ABC_123_YYYYMMDD_V01P1234YYMMDDHHMISS.txt|ABC_123_V01P.YYYYMMDD.HHMISS.txt|CATEGORY|9|8|YYYYMMDD|...|26|6|YYMMDD|...|32|6|HHMISS|...|14|8|YYYYMMDD|...|23|6|HHMISS|...

and see how far it gets you.
Thanks RudiC. This is very close, I will try to build on your solution and see how I can use it.
Only difference is I want same number of "." characters as in YYYYMMDD, YYMMDD or HHMISS.

So, Output will look like this -
Code:
SOURCE|LOGIN|SERVER|ABC_123_YYYYMMDD_V01P1234YYMMDDHHMISS.txt|ABC_123_V01P.YYYYMMDD.HHMISS.txt|CATEGORY|9|8|YYYYMMDD|........|26|6|YYMMDD|......|32|6|HHMISS|......|14|8|YYYYMMDD|........|23|6|HHMISS|......

Also, Instead of hardcoding YYYYMMDD, YYMMDD and HHMISS in split ("YYYYMMDD|YYMMDD|HHMISS", FMT) can we use separate files to pass them. I am trying to use below files.

Code:
$ cat RECORD
SOURCE|LOGIN|SERVER|ABC_123_YYYYMMDD_V01P1234YYMMDDHHMISS.txt|ABC_123_V01P.YYYYMMDD.HHMISS.txt|CATEGORY

Code:
$ cat date_format.csv
YYYYMMDD,[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9],........,%Y%m%d
YYYY-MM-DD,[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9],....-..-..,%Y-%m-%d
YYYY_MM_DD,[0-9][0-9][0-9][0-9]_[0-9][0-9]_[0-9][0-9],...._.._..,%Y_%m_%d
YYMMDD,[0-9][0-9][0-9][0-9][0-9][0-9],......,%y%m%d
YY-MM-DD,[0-9][0-9]-[0-9][0-9]-[0-9][0-9],..-..-..,%y-%m-%d
DD-MMM-YYYY,[0-9][0-9]-[a-z|A-Z][a-z|A-Z][a-z|A-Z]-[0-9][0-9][0-9][0-9],..-...-....,%d-%b-%Y
DD_MMM_YYYY,[0-9][0-9]_[a-z|A-Z][a-z|A-Z][a-z|A-Z]_[0-9][0-9][0-9][0-9],.._..._....,%d_%b_%Y
D-MMM-YYYY,[0-9]-[a-z|A-Z][a-z|A-Z][a-z|A-Z]-[0-9][0-9][0-9][0-9],.-...-....,%e-%b-%Y
D_MMM_YYYY,[0-9]_[a-z|A-Z][a-z|A-Z][a-z|A-Z]_[0-9][0-9][0-9][0-9],._..._....,%e_%b_%Y

Code:
$ cat timestamp_format.csv
XXXXXXXXXX,[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9],..........,%s
HHMISS,[0-9][0-9][0-9][0-9][0-9][0-9],......,%H%M%S

So, I am trying to write awk using three files RECORD, date_format.csv and timestamp_format.csv to achieve below output.

Code:
SOURCE|LOGIN|SERVER|ABC_123_YYYYMMDD_V01P1234YYMMDDHHMISS.txt|ABC_123_V01P.YYYYMMDD.HHMISS.txt|CATEGORY|9|8|YYYYMMDD|........|26|6|YYMMDD|......|32|6|HHMISS|......|14|8|YYYYMMDD|........|23|6|HHMISS|......

Kindly advise how can I use awk on these three files.
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Insert date/time within a filename

Hi Guys, I need to script the renaming of files as followins: files: firstjd secondjo thirdjv My script needs to insert the date/time infront of the last 2 characters of the filenames above, any ideas greatly received :) the letters before the last 2 characters could change, I'm only... (7 Replies)
Discussion started by: cooperman
7 Replies

2. Shell Programming and Scripting

Extract date from filename and create a new file

Hi, i have a filename CRED20102009.txt in a server 20102009 is the date of the file ddmmaaaa format the complete route is /dprod/informatica/Fuentes/CRED20102009.csv i want to extract the date to create a new file named Parameters.txt I need to create Parameters.txt with this... (6 Replies)
Discussion started by: angel1001
6 Replies

3. Shell Programming and Scripting

how to update date part with new increment date time

hi experts, my requirement is like this i need to develop a shell script to update date part with new incremental date time in file some 'X' which is kept at some server location incrementing every two hours.as i am new to this scripting i need support from u people,thanx in advance (1 Reply)
Discussion started by: amanmro
1 Replies

4. Shell Programming and Scripting

Extract date from filename and set timestamp

I have lots of files in this format: dvgrab-2003.06.29_15-30-24.mpg The numbers represents the date and time (YYYY.MM.DD_HH-MM-SS) How can I extract the dates from the filenames, and use the dates in the file timestamp? I guess this can be done by using "find", "sed" and "touch"? Can... (6 Replies)
Discussion started by: qwerty1234
6 Replies

5. Shell Programming and Scripting

append a filename with system date and time

Hi, There are similar kind of posts, but none seems like working for me. Please correct me if I'm wrong. I need append/rename file abc.txt with file processed date and time like abc_systemdatetimestamp.txt and move it to different folder. for example I have /source/data/abc.txt ... (1 Reply)
Discussion started by: amsn08
1 Replies

6. UNIX for Dummies Questions & Answers

to extract all the part of the filename before a particular word in the filename

Hi All, Thanks in Advance I am working on a shell script. I need some assistance. My Requirement: 1) There are some set of files in a directory like given below OTP_UFSC_20120530000000_acc.csv OTP_UFSC_20120530000000_faf.csv OTP_UFSC_20120530000000_prom.csv... (0 Replies)
Discussion started by: aealexanderraj
0 Replies

7. Programming

to extract all the part of the filename before a particular word in the filename

Hi All, Thanks in Advance I am working on a shell script. I need some assistance. My code: if then set "subscriber" "promplan" "mapping" "dedicatedaccount" "faflistSub" "faflistAcc" "accumulator"\ "pam_account"; for i in 1 2 3 4 5 6 7 8;... (0 Replies)
Discussion started by: aealexanderraj
0 Replies

8. Shell Programming and Scripting

Extract a part of a filename containing a particular word

Hi All, Thanks in Advance Shell Script or Perl Script I am working on a shell script. I need some assistance. My Requirement: 1) There are some set of files in a directory like given below OTP_UFSC_20120530000000_acc.csv OTP_UFSC_20120530000000_faf.csv... (7 Replies)
Discussion started by: aealexanderraj
7 Replies

9. UNIX for Dummies Questions & Answers

Extract Date part from the filename

Hi All, I have incoming source files abcmmyy.txt I need to extract the mmyy part from the filename and pass that to a variable . I really appreciate your quick response on this. Thanks raj (7 Replies)
Discussion started by: rajeevm
7 Replies

10. UNIX for Beginners Questions & Answers

How to extract date and time from filename?

Hi, I'm totally new in sell script and working with a shell code. I want to extract the date and time from the filenames. The filenames are different but all of them begins with WI_ SCOPE_: WI_SCOPE_DATA_CHANGE_2017-09-12_15-30-40.txt WI_SCOPE_BACK_COMPLETE_QUEUE_2017-09-12_15-31-40.txt... (5 Replies)
Discussion started by: Home
5 Replies
All times are GMT -4. The time now is 06:52 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy