Check if file is present using input from another file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Check if file is present using input from another file
# 1  
Old 01-22-2013
Check if file is present using input from another file

Hello,

I have a comma delimited file such as:

Code:
cat /statistics/support/input.txt

Code:
ID,Serial,quantitity,atribute1,atribute2
1,89569698,5,800,9900,
1,35568658,8,1200,5550
1,89569698,8,320,5500
1,68753584,85,450,200

ID should always have 1 digit, Serial 8 digits, and the others may vary.

In a separate folder, for each entry in the above files I should have txt files such as:

Code:
ls /logs/

abc_89569698_2013_01_21.txt
bcd_35568658_2013_01_21.txt
cyz_89569698_2013_01_22.txt
ccc_68753584_2013_01_21.txt
zbv_21456774_2013_01_21.txt


If possible I would an awk script to compare the serials in
Code:
input.txt

against the file names in
Code:
/logs/

folder and to do the next ones:

- build a log in
Code:
/statistics/support/statistics.log

getting the number of match serials, and total number of files in
Code:
/logs

;
- if duplicates found then output in log:
Code:
89569698: 2013_01_21, 2013_01_22

;
- for all files which aren't in input.txt create a directory and subdirectory in
Code:
/logs/

called
Code:
/missing/21456774

and then move the file.

Thanks in advance for any help.
# 2  
Old 01-23-2013
Try this:

Code:
find /logs -type f -print | awk '
FNR==NR{if ($1!="ID") S[$2]; next}
{
  if($3 in F) {
    F[$3]=F[$3]", "$4"_"$5"_"$6
    D[$3]=F[$3] }
  else F[$3]=$4"_"$5"_"$6
}
!($3 in S) {
    system("mkdir -p /missing/"$3)
    system("mv "$0" /missing/"$3"/")
}
END {
   for(serial in S) { count++ }
   for(serial in F) { found++ }
   print "Serials: " count " Matched: " found " Files: "FNR
   for(serial in D) {
      print serial": " D[serial]
   }
}' FS=, /statistics/support/input.txt FS='[_.]' - > /statistics/support/statistics.log

This User Gave Thanks to Chubler_XL For This Post:
# 3  
Old 01-23-2013
Hi,
Thank you for your reply,
In order to get it working I have done the next adjustments (also I have added a listing of missing serials from input):

Code:
find /logs -type f -print | awk '
FNR==NR{if ($1!="ID") S[$2]; next}
{
  if($2 in F) {
    F[$2]=F[$2]", "$3"_"$4"_"$5
    D[$2]=F[$2] }
  else F[$2]=$3"_"$4"_"$5
}
!($2 in S) {
   system("mkdir -p /missing/"$3)
   system("mv "$0" /missing/"$3"/")
print " Missing serials: " $2
}
END {
   for(serial in S) { count++ }
   for(serial in F) { found++ }
   print "Serials: " count " Matched: " found " Files: "FNR
   for(serial in D) {
      print serial": " D[serial]
    }  

}' FS=, /statistics/support/input.txt FS='[_.]' - > /statistics/support/statistics.log

Best Regards
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Systemd errors of missing file “No such file or directory” inspite of file being present

The contents of my service file srvtemplate-data-i4-s1.conf is Description=test service for users After=network.target local-fs.target Type=forking RemainAfterExit=no PIDFile=/data/i4/srvt.pid LimitCORE=infinity EnvironmentFile=%I . . . WantedBy=multi-user.target (0 Replies)
Discussion started by: rupeshkp728
0 Replies

2. Shell Programming and Scripting

Check if 2 input values exists in a file

I have a file number.txt.I need to get 2 inputs from the terminal like a=100 and b=200.If a and b are there in the file,then check if a < b,print "less".If a is not there in the file,print "a is missing" or if b is not there in the file,print "b is missing". number.txt: 100 200 300 (2 Replies)
Discussion started by: aneeta13
2 Replies

3. Shell Programming and Scripting

Check input file with different criteria

HI Input file.txt ABCDE1 JFHFJFJF3 10 ABCDE2 JFHFJFJF5 20 ABCDE3 JFHFJFJF5 30 ABCDE4 JFHFJFJF6 - ABCDE5 JFHFJFJF6 20 ABCDE6 JFHFJFJF6 90 ABCDE7 JFHFJFJF6 9 ABCDE8 JFHFJFJF6 I want to check third column if data missing or wrong data the echo massage and out from script. 1.... (8 Replies)
Discussion started by: pareshkp
8 Replies

4. Shell Programming and Scripting

Delete a pattern present in file 2 from file 1 if found in file 1.

I have two files File1 ==== 1|2000-00-00|2010-02-02|| 2| 00:00:00|2012-02-24|| 3|2000-00-00|2011-02-02|| File2 ==== 2000-00-00 00:00:00 I want the delete the patterns which are found in file 2 from file 1, Expected output: File1 ==== (5 Replies)
Discussion started by: machomaddy
5 Replies

5. Shell Programming and Scripting

Input file check

Hi, I have a script which runs daily. It gets 3 input files test1,test2,test3. I want to do a validation in my script to make sure i have all the 3 files available before running. If any one of the file is missing i want to break the script. Could you please help me with this request. ... (1 Reply)
Discussion started by: Krrishv
1 Replies

6. Shell Programming and Scripting

How to check field formatting of input file?

Hi, I had input file with below data, abcdefghij;20100903040607;1234567891;GLOBAL; Having values of fields with seperated by semi-colon (;) and ended with line feed (\n). Through shell script, how can I check the field formatting? Thanks in advance. (18 Replies)
Discussion started by: Poonamol
18 Replies

7. Shell Programming and Scripting

check presence of input file

My script is taking a file "input.in" as input for running the script. My worry is that i need to execute the script only if the file is present, if it's not don't perform the next commands. Just to have a check at the beginning of the script : If "input.in" exists, then go on. If it's does not... (4 Replies)
Discussion started by: newpromo
4 Replies

8. Shell Programming and Scripting

How to Check whether list file present in TXT file exist or not

Hi All, I have txt file which has list of files. I have to check whether these files exist or not. Thanks supriya (6 Replies)
Discussion started by: supriyabv
6 Replies

9. UNIX for Dummies Questions & Answers

Unix Shell Scripting -- update employees not present in input file

ALL, My shell script takes a employee file as input. I have to identify the list of employees not in the input file and update their status in the database. Approach I followed: by traversing through the input file add all the emplid's to a variable. update the status of employees not in... (2 Replies)
Discussion started by: sailussr
2 Replies
Login or Register to Ask a Question