comparison of 2 files using unix or awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting comparison of 2 files using unix or awk
# 1  
Old 07-12-2011
comparison of 2 files using unix or awk

Hello,

I have 2 files and I want them to be compared in a specific fashion

file1:
Code:
A_1200_1250
A_1251_1300
B_1301_1350
B_1351_1400
B_1401_1450
C_1451_1500

and so on...

file2:
Code:
 1210  1305  1260  1295
1400 1500 1450  1495

Now The script should look for "1200" from A_1200_1250 of file 1 and see if this number falls between column 1 and column 3 or column 2 and column 4 of file2

If it falls between column 1 and column 3 of file 2 assign it positive
If it falls between column 2 and column 4 of file2 assign it negative
It the above 2 condition's are not satisfied assign neutral

output
Code:
A_1200_1250 neutral
A_1251_1300 positive
B_1301_1350 negative
B_1351_1400 neutral 
B_1401_1450 positive
C_1451_1500 neutral

Any help or suggestion on this is greatly appreciated

Thanks,
# 2  
Old 07-12-2011
Your sample range is overlapping:
Code:
1210  1305  1260  1295
1400 1500 1450  1495

If you search for:
1261 it is in the first range 1210-1305 and also in the second 1260-1295.
# 3  
Old 07-12-2011
Hi,

You have to look only between column 1 and 3 and column 2 and 4

since 1251 is present between column 1 and 3 (1210-1260)we assign positive.
# 4  
Old 07-12-2011
Is file2 always just 2 lines?
# 5  
Old 07-12-2011
No, Its of 27000 lines and file 1 is of 111000 lines
# 6  
Old 07-12-2011
Code:
#!/usr/bin/ksh
while read mLine; do
  mNbr=$(echo ${mLine} | sed 's/.*_\(.*\)_.*/\1/')
  mFound='N'
  while read mFrom1 mTo1 mFrom2 mTo2; do
    if [[ ${mNbr} -ge ${mFrom1} && ${mNbr} -le ${mTo1} ]]; then
      mFound='Y'
      echo ${mLine} "positive"
      break
    else
      if [[ ${mNbr} -ge ${mFrom2} && ${mNbr} -le ${mTo2} ]]; then
        mFound='Y'
        echo ${mLine} "negative"
        break
      fi
    fi
  done < Range_File
  if [[ ${mFound} = 'N' ]]; then
    echo ${mLine} "neutral"
  fi
done < Search_File

# 7  
Old 07-12-2011
That's a lot of reading. Try nawk with arrays:

Code:
#!/usr/bin/nawk -f
NR == FNR {
        range[$1, $3] = "positive";
        range[$4, $2] = "negative";
}
NR != FNR {
        FS = "_"
        found=0
        for (comb in range) {
                split(comb, key, SUBSEP)
                sign = range[comb]
                if (($2 >= key[1]) && ($2 <= key[2]))
                        { found=1; break }
        }
        if (found)
                printf("%s %s\n", $0, sign);
        else
                printf("%s neutral\n", $0);
}

Note I use 'file2' as first input to establish the ranges.
Code:
[mute@sunny ~]$ ./range.sh file2 file1
A_1200_1250 neutral
A_1251_1300 positive
B_1301_1350 negative
B_1351_1400 neutral
B_1401_1450 positive
C_1451_1500 neutral

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

awk comparison using multiple files

Hi, I have 2 files, I need to use column of file1 and do a comparison on file2 column 1 and print the mismatch is file3 as mentioned below. Kindly consider that file 1 is having uniq key(column) whereas in file2 we have multiple duplicates (like 44). These duplicates should not come in... (2 Replies)
Discussion started by: grv
2 Replies

2. Shell Programming and Scripting

Need help regarding comparison between two files through UNIX script

Hi All , I am aware of unix command ,but not comforable in putting together in script level.I came to situation where I need to compare between two .txt files fieldwise and need a mismatch report. As I am new to unix script arena ,if anyone can help in the below scenario that will be really... (9 Replies)
Discussion started by: STCET22
9 Replies

3. Shell Programming and Scripting

Comparison between two files through UNIX script

Hi All , As I am new to unix scripting ,I need a help regarding unix scripting .I have two .txt files .One is source file and another is target file.I need a script through which I can compare those two files.I need a automated comparison report in a directory after comparing between source &... (2 Replies)
Discussion started by: STCET22
2 Replies

4. Shell Programming and Scripting

Awk: Replacement using 2 diff files input and comparison

Requirement: If $5(date field) in ipfile is less than $7(date field) in deact file & $1 of ipfile is present in deactfile then $1 to be replaced by $2,$3,$4,$5,$6 of deact file else if $5(date field) in ipfile is greater than $7(date field) in actfile & $1 of ipfile is present in actfile then... (5 Replies)
Discussion started by: siramitsharma
5 Replies

5. UNIX for Dummies Questions & Answers

df -> output files; comparison using awk or...

:wall: I am trying to do the following using awk (is that the best way?): Read 2 files created from the output of df (say, on different days) and compare the entries using the 1st (FileSys) and 6th (Mount) fields to see if the size has changed. Output (at least), to a new file (some header... (2 Replies)
Discussion started by: renata
2 Replies

6. Shell Programming and Scripting

Comparison and editing of files using awk.(And also a possible bug in awk for loop?)

I have two files which I would like to compare and then manipulate in a way. File1: pictures.txt 1.1 1.3 dance.txt 1.2 1.4 treehouse.txt 1.3 1.5 File2: pictures.txt 1.5 ref2313 1.4 ref2345 1.3 ref5432 1.2 ref4244 dance.txt 1.6 ref2342 1.5 ref2352 1.4 ref0695 1.3 ref5738 1.2... (1 Reply)
Discussion started by: linuxkid
1 Replies

7. Shell Programming and Scripting

Awk Comparison of 2 specific files

Hi Everybody, I know the topic sounds familiar but I just couldn't adapt or find the right code that solves my particular issue. I really hope you can help. I would like to compare 2 files in an awk script. Both files have different paths. The awk script call should look like that awk -f... (7 Replies)
Discussion started by: hhoosscchhii
7 Replies

8. UNIX for Dummies Questions & Answers

Comparison of 2 files in UNIX

Hi, There are two files in UNIX system with some lines are exactly the same, some lines are not. I want to compare these two files.The 2 files (both the files have data in Column format )should be compared row wise and any difference in data for a particular row should lead to storage of data of... (32 Replies)
Discussion started by: Dana Evans
32 Replies

9. Shell Programming and Scripting

Comparison of two files in awk

Hi, I have two files file1 and file2 delimited by semicolon, And I want to compare column 2 and column3 of file1 to column3 and column 4 in file2. file1 -------- abc;cef;155.67;143_34; def;fgh;146.55;123.3; frg;hff;134.67;; yyy;fgh;134.78;35_45; file 2 --------- abc;cef;155.09;;... (12 Replies)
Discussion started by: jerome Sukumar
12 Replies

10. Shell Programming and Scripting

String Comparison between two files using awk

I have two files with field seperator as "~". File A: 12~13~14~15 File B: 22~22~32~11 i want to calculate the difference between two files and than calculate the percentage difference and output it to a new file. How do i do this using awk. Also please suggest GOOD awk tutorials. Thank... (7 Replies)
Discussion started by: rudoraj
7 Replies
Login or Register to Ask a Question