AWK conditional addition


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting AWK conditional addition
# 1  
Old 02-17-2012
AWK conditional addition

I have a column of numbers $2, I would like to add 360 to all numbers that are negative. This method seems a bit convoluted, and does not work (outputs 0):

Code:
BEGIN {
           A=sprintf("%d", $2);
           if(A<0) A=A+360;
           BIN[A]++;
           }
           END { for(A in BIN) print A; }

any help?
# 2  
Old 02-17-2012
Code:
$ cat inputfile
1 2
1 -4
5 -7
3 5
10 151
$
$
$ awk '$2<0{$2+=360}'1 inputfile
1 2
1 356
5 353
3 5
10 151
$
$

# 3  
Old 02-17-2012
Thanks!
Could you write it another way including

Code:
for{i=0;i<NR;i++}

thanks!
# 4  
Old 02-17-2012
Quote:
Originally Posted by chrisjorg
I have a column of numbers $2, I would like to add 360 to all numbers that are negative. This method seems a bit convoluted, and does not work (outputs 0):

Code:
BEGIN {
           A=sprintf("%d", $2);
           if(A<0) A=A+360;
           BIN[A]++;
           }
           END { for(A in BIN) print A; }

any help?
Your problem is that you're trying to do the work in the BEGIN block, and not for each record. Removing BEGIN your script should work as you intended.

You also don't need sprintf() like you would if this were C.

Code:
awk '{
        if( $2+0 < 0 )
           $2 += 360
        bin[$2]++;
}
END { 
   for( a in bin) 
        print a; 
}'

# 5  
Old 02-18-2012
@chrisjorg: Why would you want to do this 'another way' by including a for loop?
# 6  
Old 02-18-2012
Code:
cat add360.dat | awk '{if($2<0) {$2+=360;print $0} else {print $0}}'

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

sed or awk Replacement/Addition

Hi, I have a big text file with similar data as below and need the text as in output using awk or sed. any help is greatly appreciated. Input: City=Chicago Elden street >>> reservedBy = business 1 >>> reservedBy = business 2 >>> reservedBy = business 3 City=Dallas Elm street >>>... (5 Replies)
Discussion started by: tech_frk
5 Replies

2. UNIX for Beginners Questions & Answers

Conditional Arithmetic in [g]awk

I am having a difficult time getting an awk one-liner to work correctly that runs a mathematical operation upon values in a field when matching a given criteria. I would like to subtract 1 from every value in field $6 that is greater than 12. In this particular case it is only a constant of... (3 Replies)
Discussion started by: jvoot
3 Replies

3. Shell Programming and Scripting

awk conditional output

Hello, How can I use a conditional to produce an output file that varies with respect to the contents of column #4 in the data file: Data file: 9780020080954 9.95 0.49 AS 23.3729 9780020130857 9.95 0.49 AS 23.3729 9780023001406 22.20 0.25 AOD ... (12 Replies)
Discussion started by: palex
12 Replies

4. Shell Programming and Scripting

Conditional awk

Hello All, I have a file like this: bash-3.00$ cat 1.txt 201112091147|0|1359331220|1025 201112091147|0|1359331088|1024 201112091144|0|1359331172|1025 201112091147|0|1359331220|1021 201112091149|0|1359331088|1027 201112091144|0|1359331172|1029 and a list of MSISDNs in another file... (9 Replies)
Discussion started by: EAGL€
9 Replies

5. Shell Programming and Scripting

awk conditional find

Hi, I have a file in the following format: aabbba 25.31806899 baaabb 38.21808852 cccccu 1.31819523 552258121.31818253 ffddybb 5.41815555 almcamc87561812689 223aqas5.661828345 adacaaaaaaa1821285 adacaaaaaaa1821286 smckaa 3.81828756 ada2512510c1821287 ada2522511c1821328... (4 Replies)
Discussion started by: alex2005
4 Replies

6. Shell Programming and Scripting

conditional statement in awk

Hi all, I have a file containing the values that would be use as the basis for printing the lines of another set of files using awk. What I want to do is something like the one below: stdev.txt 0.21 0.42 0.32 0.25 0.15 file1.txt file2.txt file3.txt ..filen.txt 0.45 0.23 ... (4 Replies)
Discussion started by: ida1215
4 Replies

7. Shell Programming and Scripting

Awk addition

How would I print out the total amount through awk? I tried using print "Total Amount: " $4+$4; Would I have to do a for loop to get through everything? (2 Replies)
Discussion started by: Boltftw
2 Replies

8. Shell Programming and Scripting

awk conditional assignment

Dear all, I want to use awk to read the three columns in a file called "test" and change them to ( 1.5 1.5 1.5) if any element is found to be greater than three. A part of the file is shown below: (0.478318 0.391032 -0.14054) (0.45562 0.392523 -0.121685) (0.437204 0.392811 -0.106158)... (3 Replies)
Discussion started by: mfmohdyasin
3 Replies

9. Shell Programming and Scripting

Awk Conditional

Hi Guys, i have this files: xyz20080716.log opqrs20080716.log abcdef20080716.log xyz20080717.log oprs20080717.log abcde20080717.log currentdate: 20080717.log I want to make script to zip the file for past day. Can anyone help for this? i've just learn awk scripting & still confused with... (3 Replies)
Discussion started by: icy_blu_blu
3 Replies

10. Shell Programming and Scripting

AWK - conditional cause

Hello guys, I want to make a conditional cause in the following file using awk: awk '{ if ($2 != 0) print $1, $2, $3}' test.csv > test2.csv FILE EXAMPLE = test.csv string,number,date abc,0,20050101 def,1,20060101 ghi,2,20040101 jkl,12,20090101 mno,123,20020101 ... (2 Replies)
Discussion started by: Rafael.Buria
2 Replies
Login or Register to Ask a Question