Comparing lines of data


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Comparing lines of data
# 8  
Old 12-03-2012
Yes indeed! Would you mind translating into English? I don't get how it knows what x is, and I don't see where the shift to the next line happens...Thanks a ton!
# 9  
Old 12-03-2012
Quote:
Originally Posted by markymarkg123
Yes indeed! Would you mind translating into English? I don't get how it knows what x is, and I don't see where the shift to the next line happens...Thanks a ton!
I'll try. First, here is the awk script in a slightly different form:
Code:
line 1 awk '
line 2 (NR>1) && (d=$2-x)>=100{print d,NR}
line 3 {x=$2}
line 4 ' file

The line numbers in blue are to make it easy to identify what I'm talking about. They cannot appear in the script.

Line 1 says that we are using awk to perform a sequence of commands on every line of input fed into awk. The single-quotes on lines 1 and 4 contain the awk commands to be evaluated.

The file on line 4 says that input lines to be processed are to be read from a file named file.

Line 2 says that for every line read from file, if the current line number in all of the input files we've read so far is greater than 1 (NR>1) and (&&) after setting d (d=) to be the difference between the 2nd field on this line ($2) and the 2nd field on the previous line (x) it finds that d is greater than or equal to 100 (>=100) it executes the command between the braces which prints the value of d and the current line number (print d,NR).

Since there are no conditions on line 3, the command between braces will be performed on every input line. The command (x=$2) sets x to the value of the 2nd field on the current line. (Note that the commands on the 1st line weren't executed because of the condition (NR>1), but x is set as the last thing to be done on every line read by the command on line 3.)

Lines 2 and 3 are reprocessed in order for every input line read from file.

Note also that you specified (y-x)>=100; not |y-x|>=100. If you meant for the absolute value of the difference to be tested instead, you'll need to adjust the conditions on line 2 and decide if you want the actual difference to be printed or the absolute value of the difference to be printed.
This User Gave Thanks to Don Cragun For This Post:
# 10  
Old 12-03-2012
Super impressed, Don. Thank you.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Comparing multiple lines in same file

Hello, I would like to write a /bin/ksh script to manipulate a file and compare its contexts. Comparing lines 1 & 2, 3 & 4, 5 & 6, and so forth until the end of the file. This is what I would like the script to compare (using line 1 & 2 as an example): 1. Verify if the last column in line 1 is... (10 Replies)
Discussion started by: seekryts15
10 Replies

2. UNIX for Dummies Questions & Answers

Comparing lines within a word list

Hello all- New to this forum, and relatively new to using grep at the Terminal command line to work with regular expressions. I've got a background in math and some programming experience, so it's not been too difficult to learn the basics of searching through my word lists for particular types of... (13 Replies)
Discussion started by: dtalvacchio
13 Replies

3. Shell Programming and Scripting

Comparing to 3 data

# cat list.txt server1 server2 server3 server4 # data to be compared of. #dns address 1.1.1.1 2.2.2.2 3.3.3.3 #for i in `cat list.txt` do grep dns $ i done (1 Reply)
Discussion started by: invinzin21
1 Replies

4. Shell Programming and Scripting

Comparing the data in a 2 files

Hi Friends, I have a file 1 CREATE MULTISET TABLE TEYT_Q9_T.TEST ,NO FALLBACK , NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM = DEFAULT, DEFAULT MERGEBLOCKRATIO ( XYZ DECIMAL(10,0), ABC VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC, PQR... (3 Replies)
Discussion started by: i150371485
3 Replies

5. Shell Programming and Scripting

Extracting specific lines of data from a file and related lines of data based on a grep value range?

Hi, I have one file, say file 1, that has data like below where 19900107 is the date, 19900107 12 144 129 0.7380047 19900108 12 168 129 0.3149017 19900109 12 192 129 3.2766666E-02 ... (3 Replies)
Discussion started by: Wynner
3 Replies

6. Shell Programming and Scripting

Comparing lines of two different files

Hello, Please help me with this problem if you have a solution. I have two files: <file1> : In each line, first word is an Id and then other words that belong to this Id piMN-1 abc pqr xyz py12 niLM y12 FY4 pqs fiRLym F12 kite red <file2> : same as file1, but can have extra lds... (3 Replies)
Discussion started by: mira
3 Replies

7. Shell Programming and Scripting

comparing lines in file

i have 2 files and i want to compare i currently cat the files and awk print $1, $2 and doing if file1=file2 then fail, else exit 0 what i want to do is compare values, with column 1 being a reference i want to compare line by line and then still be able to do if then statement to see if worked... (1 Reply)
Discussion started by: sigh2010
1 Replies

8. Shell Programming and Scripting

Comparing data inside file

Hi Everyone, I will try to explain my question please forgive my english here. I am looking for shell script or command that can compare data in the files. I have 50 files in one directory test1 test2 test3 ....so on. I want to compare data in each files with each other and output each... (4 Replies)
Discussion started by: email-lalit
4 Replies

9. Shell Programming and Scripting

comparing lines from 2 files

Hi Friends, I have 2 files A and B . I want to compare the 3rd line of file A and B . (I dont want to compare the 2 files, using diff or cmp). I just want to know whether 3rd line of A matches the 3 rd line of B. Can anybody share their knowledge on the same? Thanks , Vijaya (12 Replies)
Discussion started by: vijaya2006
12 Replies

10. UNIX for Dummies Questions & Answers

Comparing data list...

I have a list of files that I want to compare to another list of files, how do I do that? The first list will be my known list and hard coded, for example: mylist="janfile.tar jarfile.jar jan.rpt.Z" etc. The second list will be found by doing an 'ls' piped to a file: ls > filelist.dat ... (4 Replies)
Discussion started by: giannicello
4 Replies
Login or Register to Ask a Question