Dividing a column by it's last number


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Dividing a column by it's last number
# 1  
Old 03-31-2016
Dividing a column by it's last number

Hi!

I have a file as below:

Code:
0.000145 5.82056e-08
0.000146 6.82088e-08
0.000150 7.42115e-08
0.000156 8.52142e-08
0.000176 8.82169e-08
0.000178 9.82197e-08

I'd like to divide the values of the second column by its last entry (here 9.82197e-08).
I would be thankful if someone could show me how to do it in Linux.
Thanks!

Last edited by RudiC; 03-31-2016 at 07:41 AM.. Reason: Added code tags
# 2  
Old 03-31-2016
Please use code tags as required by forum rules!

"Do it in Linux" is somewhat ambiguous. Do you want to deploy a shell script, an awk (or other tool) script? Any attempts/thoughts/ideas from your side?
# 3  
Old 03-31-2016
Sorry, I should have been more clear.
I searched in the forum and I saw a similar post as mine by for dividing a column by its first number using awk. here is what was suggested:
Code:
awk 'BEGIN{first_line=0;divide_by=1;}{if(first_line==0){first_line=1; divide_by=$1;}print $1/divide_by;}END{}' your_file

Now, I'm wondering how I can do the same but by dividing the column by its last number.

Last edited by RudiC; 03-31-2016 at 08:08 AM..
# 4  
Old 03-31-2016
Hi, try:
Code:
awk 'NR==FNR{n=$2; next} {$2/=n}1' your_file your_file

output:
Code:
0.000145 0.592606
0.000146 0.694451
0.000150 0.755566
0.000156 0.867588
0.000176 0.898159
0.000178 1

You could add testing for n==0

---

Note: the input file must be specified twice on the command line !

Last edited by Scrutinizer; 03-31-2016 at 08:34 AM..
# 5  
Old 03-31-2016
There are several possible approaches. For small files like above, you can keep all input in memory, try
Code:
awk '{T1[NR] = $1; T2[NR] = $2} END {for (n=1; n<=NR; n++) print T1[n], T2[n]/$2}' file
0.000145 0.592606
0.000146 0.694451
0.000150 0.755566
0.000156 0.867588
0.000176 0.898159
0.000178 1

This may work on some but not all awk versions depending on the NR and $2 values being retained in the END section or not.
For larger files, you might want to extract the last line with e.g. tail, or reverse the overall line order with tac, or run through the file twice.
This User Gave Thanks to RudiC For This Post:
# 6  
Old 03-31-2016
@RudiC, according to POSIX awk:Variables and Special Variables
Quote:
NR
The ordinal number of the current record from the start of input. Inside a BEGIN action the value shall be zero. Inside an END action the value shall be the number of the last record processed.
So one should be able to use NR and instead of $2, you could use T2[NR]
# 7  
Old 03-31-2016
Many thanks Rudi!

Actually my file is large (I had just put a sample of the last rows). But anyways it works perfectly now!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Adding number in one column

Hello I have something like this a 1 b 1 c 1 d 1 e 1 This is inside 1.dat and this is what I am trying to get a 2 b 2 c 2 d 2 e 2 (4 Replies)
Discussion started by: jeo_fb
4 Replies

2. Shell Programming and Scripting

Split column data if the table has n number of column's with some record

Split column data if the table has n number of column's with some record then how to split n number of colmn's line by line with records Table --------- Col1 col2 col3 col4 ....................col20 1 2 3 4 .................... 20 a b c d .................... v ... (11 Replies)
Discussion started by: Priti2277
11 Replies

3. Shell Programming and Scripting

Split column data if the table has n number of column's

please write a shell script Table -------------------------- 1 2 3 a b c 3 4 5 c d e 7 8 9 f g h Output should be like this --------------- 1 2 3 3 4 5 7 8 9 a b c c d e f g h (1 Reply)
Discussion started by: Priti2277
1 Replies

4. Shell Programming and Scripting

Dividing a column and submitting it as stdin

I currently have two programs written in C named "remove" and "calculate. When I call ./remove it removes some data from stdin. When I call ./calculate which takes in an argument and also data from stdin and calculates and returns a value. Currently writing a script that calls both of these... (1 Reply)
Discussion started by: kadanakanz
1 Replies

5. Shell Programming and Scripting

Help with compare two column and print out column with smallest number

Input file : 5 20 500 2 20 41 41 0 23 1 Desired output : 5 2 20 0 1 By comparing column 1 and 2 in each line, I hope can print out the column with smallest number. I did try the following code, but it don't look good :( (2 Replies)
Discussion started by: perl_beginner
2 Replies

6. Shell Programming and Scripting

How to get the column number in awk?

Hi Guys, I have a question on how i can get the column number in a file and used it in awk. i have a file which it has these records inside it. ... (7 Replies)
Discussion started by: reignangel2003
7 Replies

7. Shell Programming and Scripting

Dividing by zero

Does anyone know how to include as a script maybe an "echo" warning that explains that if a user uses the second number "zero" when dividing, that the result will BE "zero." I need, example: 5/0 (second number) = 0, in script form. current script: echo "Enter a number" read num1 echo... (4 Replies)
Discussion started by: jefferj54
4 Replies

8. UNIX for Dummies Questions & Answers

Dividing a column by it's first number

Hi! Is there an easy way (maybe using awk??) to divide the values of one column of the file by it's first entry.. If I have a column: 3 4 5 6 7 I would like to divide it by 3. I want to do this for more than 100 files, so it wouldn't be practical to open file by file and... (26 Replies)
Discussion started by: cosmologist
26 Replies

9. UNIX for Dummies Questions & Answers

Grep by column number

I have a data file that is arranged like this: Marketing Ranjit Singh Eagles Dean Johnson FULL Marketing Ken Whillans Eagles Karen Thompson FULL Sales Peter RobertsonGolden TigersRich Gardener PART President Sandeep Jain Wimps Ken Whillans CONT... (7 Replies)
Discussion started by: hitman247m
7 Replies

10. Shell Programming and Scripting

returning a column number

Hi all, i was doing a small program where if i was to be given the first 3 letters of any month i.e. in the form of Jan or Apr then it would return the column number where it finds a match. To do this i created a 12 element array of months with first 3 letters and if i echo'ed the contents of... (2 Replies)
Discussion started by: scriptingmani
2 Replies
Login or Register to Ask a Question