Compare between two files with condition


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Compare between two files with condition
# 8  
Old 07-31-2018
Code:
awk '
                {VT = $NF                                                       # Extract last field into Value Temp variable 
                 sub (FS "*" VT "$", _)                                         # and eliminate from input line
                }
NR == FNR       {VAL[$0] = VT                                                   # for the first file (NR == FNR), store the Temp into
                                                                                # VAL array indexed by curtailed input line
                 next                                                           # stop processing this input line, continue with next input line
                }
                                                                                # we're in file2 now
                {for (v in VAL)                                                 # run through all indices (= $0 from file1) of VAL array
                                 if ($0 ~ v)                                    # if actual line ($0) matches index from file1 
                                                if (VT < VAL[v])                # and actual Value Temp is less than former 
                                                                        print $0, VT, FILENAME
                                                else                            # greater than or equal
                                                                        print v, VAL[v], ARGV[1]
                }
' file[12]


Last edited by RudiC; 08-01-2018 at 12:13 PM..
This User Gave Thanks to RudiC For This Post:
# 9  
Old 08-01-2018
Thanks a lot for the explanation. You are the best.

The thing i cant understand is :

Code:
if ($0 ~ v)           # if actual line ($0) matches index from file1

is our pattern match, right ?

How does it know that it should match CountryName Mobile instead of for example just CountryName.

Regards.
# 10  
Old 08-01-2018
It matches what it is being offered in file1's lines' fields 1 - (NF-1). If you omit "Mobile" there, it won't be matched. The count of spaces is crucial here - it need to be the same in both files' patterns.

Last edited by RudiC; 08-01-2018 at 12:16 PM..
# 11  
Old 08-01-2018
So if i have :
United Kingdom in file1

United Kingdom, United Arab Emirates and United States of America in file2

It gets United from file1 and matches it with all the 3 countries from file2, which have United in their name ? Not with United Kingdom only.

The first field is counted until first space, comma or quote, right ?

Last edited by dragonfly85; 08-01-2018 at 12:40 PM..
# 12  
Old 08-01-2018
Did you run some tests with your new data? What be the result?
# 13  
Old 08-02-2018
Yeah, i did. It should be exact match. If it is United Kingdom Mobile 1 in file1, it searches for United Kingdom Mobile through the file2. So it wont match United Staes or United Arab Emirates, it matches only rows with United Kingdom Mobile contained.

Thanks for the lessons.

Regards,
DF.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Compare two files with awk and condition

I am preparing a script to check the configuration of the db2 against the standard configuration. I am fetching the output in file A and want to compare it with the standard output written in file B. File A Diagnostic error capture level (DIAGLEVEL) = 3 Audit buffer size (4KB) (AUDIT_BUF_SZ)... (2 Replies)
Discussion started by: bashb
2 Replies

2. Shell Programming and Scripting

IF condition to compare file prefix

I have files with naming as below, testS123, testS223, testB1, testC1, testD1 I need to write a if condition to print 'Hello' when the file prefix is not testS* else 'Good bye'. if then echo "Hello" else echo "Good bye" fi; (1 Reply)
Discussion started by: r@v!7*7@
1 Replies

3. Shell Programming and Scripting

compare 2 files and return unique lines in each file (based on condition)

hi my problem is little complicated one. i have 2 files which appear like this file 1 abbsss:aa:22:34:as akl abc 1234 mkilll:as:ss:23:qs asc abc 0987 mlopii:cd:wq:24:as asd abc 7866 file2 lkoaa:as:24:32:sa alk abc 3245 lkmo:as:34:43:qs qsa abc 0987 kloia:ds:45:56:sa acq abc 7805 i... (5 Replies)
Discussion started by: anurupa777
5 Replies

4. Shell Programming and Scripting

How to compare 2 file with Condition.

Hello, I need to run a command or shell script that will compare 2 file with Condition. Can you please help ? thank you. File 1. ############start@linda22 ... ################## aaaaaaa bbbbbbb cccccc dddddd eeeee 11111 ############start@linda23 ... ################## aaaaaaa... (2 Replies)
Discussion started by: ooilinlove
2 Replies

5. Shell Programming and Scripting

Compare the two variable with if condition

Please help me with this: I need to compare two values in if condition in shell script but its goes always to else condition: TIME_CHECK=PM TIME-CLOCK=PM if ; then echo "You have access!" else echo "ACCESS DENIED!" fi (5 Replies)
Discussion started by: aroragaurav.84
5 Replies

6. Shell Programming and Scripting

compare 2 files and extract the data which is not present in other file with condition

I have 2 files whose data's are as follows : fileA 00 lieferungen 00 attractiop 01 done 02 forness 03 rasp 04 alwaysisng 04 funny 05 done1 fileB alwayssng dkhf fdgdfg dfgdg sdjkgkdfjg funny rasp (7 Replies)
Discussion started by: rajniman
7 Replies

7. Shell Programming and Scripting

Compare columns of 2 files based on condition defined in a different file

I have a control file which tells me which are the fields in the files I need to compare and based on the values I need to print the exact value if key =Y and output is Y , or if output is Y/N then I need to print only Y if it matches or N if it does not match and if output =N , then skip the feild... (7 Replies)
Discussion started by: newtoawk
7 Replies

8. Shell Programming and Scripting

How to compare 2 files & get only few columns based on a condition related to both files?

Hiiiii friends I have 2 files which contains huge data & few lines of it are as shown below File1: b.dat(which has 21 columns) SSR 1976 8 12 13 10 44.00 39.0700 70.7800 7.0 0 0.00 0 2.78 0.00 0.00 0 0.00 2.78 0 NULL ISC 1976 8 12 22 32 37.39 36.2942 70.7338... (6 Replies)
Discussion started by: reva
6 Replies

9. UNIX for Dummies Questions & Answers

How to compare null and space using single if condition

Hi I have a input file with many fields and each filed will be with in double quotes(""). i want to check fields contains balnk,null or space using condition using if. when i write code as below for if condition its not working a=`awk -F ',' '{gsub("\"", "", $1);'NF==0';printf $1}'... (3 Replies)
Discussion started by: jayakumarrt
3 Replies
Login or Register to Ask a Question