Compare between two files with condition


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Compare between two files with condition
# 1  
Old 07-31-2018
Compare between two files with condition

Hello there.

I am trying to compare two files.

File1

Code:
Austria Mobile  1
United Kingdom Mobile    1
...

File2

Code:
Austria Mobile Vien    2
Austria Mobile Ostr    0
United Kingdom Mobile Dev       0.7
United Kingdom Mobile OST      1.5

What i want to do is to compare both files and if all the words match to a Mobile, including mobile, then it should print the line with lower number. And if the printed line is from File1 , it should also say, that the printed line is from File1, if the printed line is from File2, it should say that the line is from FILE2.

Thnaks in advance!

Last edited by dragonfly85; 07-31-2018 at 01:55 PM..
# 2  
Old 07-31-2018
Not sure I understand. What should the output look like? From what I see / infer, it'd be empty as there are no matches.
# 3  
Old 07-31-2018
For example :

United Kingdom Mobile, matches United Kingdom Mobile Dev.
United Kingdom Mobile`s value is 1,
United Kingdom Mobile Dev is 0.7

So the output should be :

United Kingdom Mobile Dev 0.7 File2

If CountryName Mobile from File1, matches CountryName Mobile .... from File2, then we have match and it should compare both values. Then it gets the line with the lower value and prints it , by showing from which file is taken from.

We care about CountryName followed by word Mobile. There is no matter if CountryName Mobile from File2 is followed by any other words.

CountryName Mobile is our pattern match.

Last edited by dragonfly85; 07-31-2018 at 02:13 PM..
# 4  
Old 07-31-2018
And what about United Kingdom Mobile OST 1.5? What about equal value?
# 5  
Old 07-31-2018
United Kingdom Mobile 1 matches United Kingdom Mobile OST 1.5.
Code:
United Kingdom Mobile 1

has lower value ( 1 < 1.5) , so the output should be
Code:
United Kingdom Mobile 1 File1.

Yeah, i forgot about equals. If equal occurs, it should print the line from File2 with message equal.

Grrr, it is too complicated, i know ....
# 6  
Old 07-31-2018
Making the assumption you want to compare line by line, and ignoring the special case of equal values, I come up with
Code:
awk '
                {VT = $NF
                 sub (FS "*" VT "$", _)
                }
NR == FNR       {VAL[$0] = VT
                 next
                }
                {for (v in VAL) if ($0 ~ v)     if (VT < VAL[v])        print $0, VT, FILENAME
                                                else                    print v, VAL[v], ARGV[1]
                }
' file[12]
Austria Mobile 1 file1
Austria Mobile Ostr 0 file2
United Kingdom Mobile Dev 0.7 file2
United Kingdom Mobile 1 file1

EDIT: we obviously cross-posted. For equals printing the file2 info, change the < comparison to <=.


EDIT 2:
Quote:
Originally Posted by dragonfly85
. . . Grrr, it is too complicated, i know ....

Not necessarily. Once you get your ducks in a row and your spec nailed down beyond ambiguities its a matter of logics and experience.

Last edited by RudiC; 07-31-2018 at 03:01 PM..
These 2 Users Gave Thanks to RudiC For This Post:
# 7  
Old 07-31-2018
WoW ! Thank you ! It works like a charm.

Is it too much, if i ask for explanation about the syntax ?

For example, what is VT and where the hell is the pattern match ? LOL!

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