Visit Our UNIX and Linux User Community


Compare values in multiple rows in one column using awk


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Compare values in multiple rows in one column using awk
# 1  
Old 02-11-2020
Compare values in multiple rows in one column using awk

I would like to compare values in column 8, and grep the ones where the different is > 1, columns 1 and 2 are the key for array.

Every 4 rows the records values in columns 1 and 2 changed. Then, the comparison in the column 8 need to be done for the 4 rows everytime columns 1 and 2 changed

input file

Code:
    47329,39785,2,12,10,351912.50,2533105.56,170.93,1
    47329,39785,2,12,28,351912.53,2533118.81,172.91,1
    47329,39785,3,6,7,351912.82,2533105.07,170.89,1
    47329,39785,3,6,20,351913.03,2533117.41,170.93,1
    47329,39797,2,12,10,352063.14,2533117.84,170.66,1
    47329,39797,2,12,28,352062.77,2533104.67,173.63,1
    47329,39797,3,6,7,352064.11,2533119.32,170.64,1
    47329,39797,3,6,20,352063.50,2533107.10,170.69,1
    47329,39809,2,12,10,352212.35,2533106.19,170.79,1
    47329,39809,2,12,28,352212.45,2533119.12,170.68,1
    47329,39809,3,6,7,352212.01,2533105.75,170.77,1
    47329,39809,3,6,20,352211.89,2533117.91,170.78,1
    47329,39821,3,6,7,352363.73,2533120.01,171.14,1
    47329,39821,3,6,20,352363.25,2533107.48,171.22,1
    47329,39821,2,12,10,352362.49,2533118.77,175.27,1
    47329,39821,2,12,28,352362.15,2533106.48,171.25,1

Desired output

Code:
 47329,39785,2,12,28,351912.53,2533118.81,172.91,1,
    47329,39797,2,12,28,352062.77,2533104.67,173.63,1
    47329,39821,2,12,10,352362.49,2533118.77,175.27,1

I have tried to substrat rows in column 8, but i am unable to get the desired output

Code:
 awk -F, '{$10 = $8 - prev8; prev8 = $8; print $0}' file

Thanks in advance for your help
# 2  
Old 02-11-2020
Please be way more specific. What does "where the different is > 1" mean? How does this show up in your desired output? Which of the four lines should be printed? In your attempt, you reference $10 which doesn't exist in your input sample, and only in the first line, although empty, in your desired output.
# 3  
Old 02-11-2020
Code:
awk -F, 'v[$1,$2] && ($8-v[$1,$2])>1;{v[$1,$2]=$8;}' file


Last edited by RavinderSingh13; 02-28-2020 at 02:48 AM..
This User Gave Thanks to rdrtx1 For This Post:
# 4  
Old 02-11-2020
Try also (after some guesswork)

Code:
awk -F, '{IX = $1 FS $2} IX == OX && $8 - O8 > 1; {OX = IX; O8 = $8}' file
    47329,39785,2,12,28,351912.53,2533118.81,172.91,1
    47329,39797,2,12,28,352062.77,2533104.67,173.63,1
    47329,39821,2,12,10,352362.49,2533118.77,175.27,1

# 5  
Old 02-12-2020
Many Thanks for the help

Previous Thread | Next Thread
Test Your Knowledge in Computers #395
Difficulty: Medium
HP produced an RMB implementation for Microsoft Windows called HP Instrument BASIC for Windows.
True or False?

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Compare two files column values using awk

Judi # cat File1 judi /export/home 76 judi /usr 83 judi # judi # cat File2 judi /export/home 79 judi /usr 82 judi # if COLUMN3 of File2 is greater that COLUMN3 of File1, then print File2's lines juid /export/home 79 Code tags please (2 Replies)
Discussion started by: judi
2 Replies

2. Shell Programming and Scripting

How to compare the values of a column in a same file using awk?

Dear Unix experts, I have got a file where I would like to compare the values of second column if first column is same in such a way that the difference between the values is >50. If not, I would like to discard both values. For example, my input file looks like - comp275_c0_seq2 73... (7 Replies)
Discussion started by: utritala
7 Replies

3. Shell Programming and Scripting

awk Print New Column For Every Two Lines and Match On Multiple Column Values to print another column

Hi, My input files is like this axis1 0 1 10 axis2 0 1 5 axis1 1 2 -4 axis2 2 3 -3 axis1 3 4 5 axis2 3 4 -1 axis1 4 5 -6 axis2 4 5 1 Now, these are my following tasks 1. Print a first column for every two rows that has the same value followed by a string. 2. Match on the... (3 Replies)
Discussion started by: jacobs.smith
3 Replies

4. UNIX for Dummies Questions & Answers

Compare values of fields from same column with awk

Hi all ! If there is only one single value in a column (e.g. column 1 below), then return this value in the same output column. If there are several values in the same column (e.g. column 2 below), then return the different values separated by "," in the output. pipe-separated input: ... (11 Replies)
Discussion started by: lucasvs
11 Replies

5. Shell Programming and Scripting

Compare values in two files. For matching rows print corresponding values from File 1 in File2.

- I have two files (File 1 and File 2) and the contents of the files are mentioned below. - I am trying to compare the values of Column1 of File1 with Column1 of File2. If a match is found, print the corresponding value from Column2 of File1 in Column5 of File2. - I tried to modify and use... (10 Replies)
Discussion started by: Santoshbn
10 Replies

6. Shell Programming and Scripting

How to compare the values of a column in awk in a same file and consecutive lines..

I would like to compare the values of 2nd column of consecutive lines of same file in such a way so that if the difference between first value and second value is more than 100 it should print complete line else ignore line. Input File ========== PDB 2500 RTDB 123 RTDB-EAGLE 122 VSCCP 2565... (4 Replies)
Discussion started by: manuswami
4 Replies

7. Shell Programming and Scripting

Compare two files using awk or sed, add values in a column if their previous fields are same

Hi All, I have two files file1: abc,def,ghi,5,jkl,mno pqr,stu,ghi,10,vwx,xyz cba,ust,ihg,4,cdu,oqw file2: ravi,def,kishore ramu,ust,krishna joseph,stu,mike I need two output files as follows In my above example, each row in file1 has 6 fields and each row in file2 has 3... (3 Replies)
Discussion started by: yerruhari
3 Replies

8. UNIX for Dummies Questions & Answers

Compare two files using awk or sed, add values in a column if their previous fields are same

Hi All, I have two files file1: abc,def,ghi,5,jkl,mno pqr,stu,ghi,10,vwx,xyz cba,ust,ihg,4,cdu,oqw file2: ravi,def,kishore ramu,ust,krishna joseph,stu,mike I need two output files as follows In my above example, each row in file1 has 6 fields and each row in file2 has 3... (1 Reply)
Discussion started by: yerruhari
1 Replies

9. UNIX for Advanced & Expert Users

Compare two files using awk or sed, add values in a column if their previous fields are same

Hi All, I have two files file1: abc,def,ghi,5,jkl,mno pqr,stu,ghi,10,vwx,xyz cba,ust,ihg,4,cdu,oqw file2: ravi,def,kishore ramu,ust,krishna joseph,stu,mike I need two output files as follows In my above example, each row in file1 has 6 fields and each row in file2 has 3... (1 Reply)
Discussion started by: yerruhari
1 Replies

Featured Tech Videos