Should pick latest file within past 3 days using UNIX script and perform steps in message below.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Should pick latest file within past 3 days using UNIX script and perform steps in message below.
# 15  
Old 12-06-2017
To make it simply clear:

for file in *_*_*.dat won't match any of your files. Try *_*.*.dat instead.

FILESTAMP=${file#*_} will result in 20171204.052389.dat if $file contains abc_20171204.052389.dat

FILESTAMP=${FILESTAMP%%.*} will yield 20171204 from above. Watch the double %% sign, and the . in lieu of _ .

From your perpetuating identical questions I don't get the feeling you tried any analysing / understanding of the proposal you were given.
# 16  
Old 12-07-2017
thank you. I ran the whole script .


Code:
output in the other file has 
"Binary file abc_20171204.052389.dat matches"


Script is not coping the contents that has 'GENERIC' to other file.
# 17  
Old 12-07-2017
It looks like your file has some characters that are non-text and grep is assuming the file is binary.

You can force grep to treat your file as text with the -a option:

eg: replace your grep command in the script as follows:

Code:
       if [ $? -eq 1 ] 
       then
           # copy all data that has GENERIC to "other file"
           grep -a "GENERIC" $file >> ./"other file"
       fi

# 18  
Old 12-07-2017
Thank you it worked and successfully created a file.


If we have multiple files in the directory which has text
Code:
'S A M P L E'

in the files starting at
Code:
position 31 on line 19

.What will happen?Will script picks the latest file and process it and than exits?Please guide.
# 19  
Old 12-07-2017
Note that if your *.dat files are not true text files (i.e., no lines longer than 2048 bytes including the terminating <newline> character, every line is terminated by a <newline> character, and contains no NUL characters), the awk script you're using may give you false negatives. If, as an example, each of your "lines" starts with a single 4-byte binary integer value, each of those four bytes could be misinterpreted by awk as a <newline> character. So, in this example, it is theoretically possible that the string S A M P L E might appear on what appears to awk to be any line between line 31 and line 155 in position 27, 28, 29, 30, or 31.

If we knew what operating system you're using, what shell you're using, and the actual format of the .dat files that are being processed by your script; there might be a way to write a shell script, an awk script, or a C program to reliably search those files for the strings you want to find.
# 20  
Old 12-07-2017
Quote:
Originally Posted by sunnykamal59
Thank you it worked and successfully created a file.


If we have multiple files in the directory which has text
Code:
'S A M P L E'

in the files starting at
Code:
position 31 on line 19

.What will happen?Will script picks the latest file and process it and than exits?Please guide.
The current form of the script will take all files that match your specified requirement (timestamp within 3 days and containing SAMPLE text) and extract the GENERIC text from them all this is appended to the 'other file'
# 21  
Old 12-07-2017
Hi Chublar,

Thank you!My requirement is to pick and process the latest file received in past 3 days, which has 'SAMPLE' in position 31 on line 19 and than grep 'GENERIC' in the file and copying it to other file.


Instead of appending the 'GENERIC' text from all the files.Can we just only process the latest file which has 'SAMPLE' ?


operating system is windows 7 32 bit.
shell: /bin/bash
.dat file is : fixed width

Last edited by Don Cragun; 12-08-2017 at 03:43 AM.. Reason: Get rid of CODE tags surrounding plain text; add ICODE tags around fixed strings.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

I have this list of files . Now I will have to pick the latest file based on some condition

3679 Jul 21 23:59 belk_rpo_error_**po9324892**_07212014.log 0 Jul 22 23:59 belk_rpo_error_**po9324892**_07222014.log 3679 Jul 23 23:59 belk_rpo_error_**po9324892**_07232014.log 22 Jul 22 06:30 belk_rpo_error_**po9324267**_07012014.log 0 Jul 20 05:50... (5 Replies)
Discussion started by: LoneRanger
5 Replies

2. Shell Programming and Scripting

to pick the latest file modified in a directory

I wan to pick the latest modified file name and redirect it to a file .. ls -tr | tail -1 >file but this is printing file ins side the filename , can anyone help me out (5 Replies)
Discussion started by: vishwakar
5 Replies

3. UNIX for Dummies Questions & Answers

Need command to pick the latest file

Hi In my script i am trying to access mainframe server using FTP, in the server i have filee with the timestamp.I need to get the file with the latest timestamp among them . The server has the below files / ftp> cd /outbox 250 CWD command successful ftp> ls 200 PORT command successful... (4 Replies)
Discussion started by: laxmi131
4 Replies

4. UNIX for Dummies Questions & Answers

pick the very latest directory

Hi, I have some list of directories in the form datemonthyear e.g. 02082009, 03082009 and 04082009 etc. I need to pick the latest directory from the current working directory. Outcome: 05082009 This is the output am expecting. Thanks (6 Replies)
Discussion started by: venkatesht
6 Replies

5. Shell Programming and Scripting

how can i pick the latest log file as per below

in the below .. i want to pick the latest logfile which is having JPS.PR inside.. that means i want particularly "spgport040408041223.log:@@@@@@@@ 04:13:09 Adding: JPS.PR." which is latest among these.. is it possible to compare the current time with logfile time ? reptm@xblr0758rop>... (4 Replies)
Discussion started by: mail2sant
4 Replies

6. UNIX for Dummies Questions & Answers

unix script that will pick up first 10 file

Suppose I have a unix file which contain a lost of 60 files like filename1 filename2 ... .. ... filename60 I want to write a unix script that will pick up first 10 files in first run 10-20 files in 2 run 20-30 files in 3 run 30-40 files in 4 run 40-50 files in 5 run 50-60 files in 6... (1 Reply)
Discussion started by: er_zeeshan05
1 Replies

7. Shell Programming and Scripting

find files from the past 7 days

Hi All, I have a file which contains the listing of another directory: >cat list.dat -rwxr-xr-x 1 test staff 10240 Oct 02 06:53 test.txtdd -rwxrwxrwx 1 test staff 0 Oct 04 07:22 test.txx -rwxrwxrwx 1 test staff 132 Sep 16 2007 test_tt.sh... (6 Replies)
Discussion started by: deepakgang
6 Replies

8. UNIX for Dummies Questions & Answers

creating a CSV file for past 7 days

I have a requirement which will select the files with a specific naming convention which got created in past 7 days in a specific directory.Lets say the directory is /data/XYZ and the file names follow the below nomenclature like Daily_File*.txt I just need to create one CSV file which will... (12 Replies)
Discussion started by: dr46014
12 Replies

9. Shell Programming and Scripting

Script to pick out files from a file which are older than 15 days

Hi , I have a file abc.txt which actually contains a directory and file list -rwxrwxr-x 1 dmadmin mmasapp 334 Dec 03 2001 aafs_006.ksh -rwxrwxr-x 1 dmadmin mmasapp 1270 Nov 13 2001 mcl_deposit_ftp.ksh -rwxrwxr-x 1 dmadmin mmasapp 925 Oct 31 2001 ... (1 Reply)
Discussion started by: viv1
1 Replies

10. Shell Programming and Scripting

ls latest 4 days or specify days of files in the directory

Hi, I would like to list latest 2 days, 3 days or 4 days,etc of files in the directory... how? is it using ls? (3 Replies)
Discussion started by: happyv
3 Replies
Login or Register to Ask a Question