The difference between end number in the early row and the start number in the next


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting The difference between end number in the early row and the start number in the next
# 1  
Old 07-30-2012
The difference between end number in the early row and the start number in the next

Hi Power User,


I'm trying to compute this kind of text file format:

file1:

 
jakarta 100 150
jakarta 170 210
beijing 220 250
beijing 260 280
beijing 290 320
new_york 330 350
new_york 370 420
tokyo 430 470
tokyo 480 485
seoul 490 540
seoul 570 590
seoul 640 680
seoul 730 750
singapur 780 830
singapur 860 940
. . .
. . .
. . .
p b e
The meaning of the dots that goes away until 'p', 'b', and 'e' are the marker that the flow those data still goes on until that point. The desired output is like this:

file2:
 
jakarta 170 150
beijing 260 250
beijing 290 280
new_york 370 350
tokyo 480 470
seoul 570 540
seoul 640 590
seoul 730 680
singapur 860 830
. . .
. . .
. . .
p b e
The explanation, the desired data is the difference between the end number in the town in the early row and the start number in the town in the next row. The numerical difference between different cities is not asked.

I have tried this following awk script:
Code:
 awk 'BEGIN{p=$1;b=$2;e=$3;l=$0;}{pi=$1;bi=$2;ei=$3;li=$0;if (p==pi){bi>e}else print "#", l;p=pi;bi - e;l=li;}END{print "#",l;}' file1 > file2

But the result is like this:

 
# jakarta 170 210
# beijing 290 320
# new_york 370 420
# tokyo 430 470
# seoul 730 750
# singapur 860 940
. . .
. . .
. . .
p b e
The '#' sign is for marking the desired data. Do you have a solution for this problem? Thank you.

warm regards,

Arli
# 2  
Old 07-30-2012
If you have a sorted file:
Code:
awk '{if($1==ant){print $1FS$2FS""c3 };ant=$1;c3=$3}' infile

# 3  
Old 07-30-2012
Hi, Thanks for the solution. It's working smoothly Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Split a file by start and end row.

I have a file which looks something as following, I would like to split to several files, The start and end of each file is 'FILE' and end with 'ASCII... ' . At the same time for each file in the first column add 100 and also second column add 100 the rest of the column as it is , see example of... (2 Replies)
Discussion started by: tk2000
2 Replies

2. Shell Programming and Scripting

Get row number from file1 and print that row of file2

Hi. How can we print those rows of file2 which are mentioned in file1. first character of file1 is a row number.. for eg file1 1:abc 3:ghi 6:pqr file2 a abc b def c ghi d jkl e mno f pqr ... (6 Replies)
Discussion started by: Abhiraj Singh
6 Replies

3. UNIX for Dummies Questions & Answers

Finding row number along with length of row

I have a fixed length file and I want to find out row number along with row length. I have a program that give me the line length if it satisfy the condition; but i would like to add row number as well? How do I do that? while IFS= read -r line; do if ; then echo ${line} echo... (8 Replies)
Discussion started by: princetd001
8 Replies

4. UNIX for Dummies Questions & Answers

Row number

Dear All, I am new to UNIX . Please tell me how to retreive row number from the file. In AS/400 we can retreive RRN(Relative record number ) from the file, In same way what is the option to take relative record number from the file in UNIX. It may be very easy query, but still I need ur... (9 Replies)
Discussion started by: coolmaninit
9 Replies

5. Shell Programming and Scripting

how to add the number of row and count number of rows

Hi experts a have a very large file and I need to add two columns: the first one numbering the incidence of records and the another with the total count The input file: 21 2341 A 21 2341 A 21 2341 A 21 2341 C 21 2341 C 21 2341 C 21 2341 C 21 4567 A 21 4567 A 21 4567 C ... (6 Replies)
Discussion started by: juelillo
6 Replies

6. UNIX for Dummies Questions & Answers

To find the Row number

Hi Can any one tell me what is the command to find out the row id or row number for a particular record Thanks sri (6 Replies)
Discussion started by: laxmi131
6 Replies

7. Shell Programming and Scripting

count the number of lines that start with the number

I have a file with contents similar to this. abcd 1234 4567 7666 jdjdjd 89289 9382 92 jksdj 9823 298 I want to write a shell script which count the number of lines that start with the number (disregard the lines starting with alphabets) (1 Reply)
Discussion started by: grajp002
1 Replies

8. Shell Programming and Scripting

Take each number in table row and find the difference from the corresponding line

I have a two files containing numbers like below. First one contains one number on each line, the other is a table of numbers, each separated by a space. There are the same number of lines in each file. I want to take each number in the row of the table and find the difference from the... (12 Replies)
Discussion started by: kristinu
12 Replies

9. UNIX for Dummies Questions & Answers

Extract a specific number from an XML file based on the start and end tags

Hello People, I have the following contents in an XML file ........... ........... .......... ........... <Details = "Sample Details"> <Name>Bob</Name> <Age>34</Age> <Address>CA</Address> <ContactNumber>1234</ContactNumber> </Details> ........... ............. .............. (4 Replies)
Discussion started by: sushant172
4 Replies

10. Shell Programming and Scripting

AWK: row number NR

Hi I've file1 as: after I read all rows with awk, I need to change some of them. I mean, for example if the last row is zero then change row number 4 in zero too. So I'd like to refers each row as a vector and change its value accordly some conditions. I know that NR keep just the "current"... (2 Replies)
Discussion started by: Dedalus
2 Replies
Login or Register to Ask a Question