Sponsored Content
Top Forums Shell Programming and Scripting Problem using function in awk Post 302451097 by durden_tyler on Sunday 5th of September 2010 04:59:50 PM
Old 09-05-2010
Can't reproduce your error. It works as expected for me.

Code:
$ 
$ 
$ cat gaussian1.sh
##
awk '
  function rgaussian1() {
      a = rand()
      b = rand()
      c = rand()
      r1 = a + b + c
      return r1
  }
  function rgaussian11(mean, sigma) {
      print "(1)  VALUES: ",mean,sigma
      a = rgaussian1()
      b = mean + (a * sigma)
      print "(2)  VALUES: ",mean,sigma
      return b
  }
  BEGIN {
      srand()
      a = 5
      b = 0.5
      x = rgaussian11(a, b)
      print x
  }'
$ 
$ 
$ . gaussian1.sh
(1)  VALUES:  5 0.5
(2)  VALUES:  5 0.5
5.73322
$ 
$ 
$ . gaussian1.sh
(1)  VALUES:  5 0.5
(2)  VALUES:  5 0.5
5.99618
$ 
$ . gaussian1.sh
(1)  VALUES:  5 0.5
(2)  VALUES:  5 0.5
6.01297
$ 
$ . gaussian1.sh
(1)  VALUES:  5 0.5
(2)  VALUES:  5 0.5
5.27391
$ 
$ . gaussian1.sh
(1)  VALUES:  5 0.5
(2)  VALUES:  5 0.5
5.56646
$ 
$ 

tyler_durden
 

10 More Discussions You Might Find Interesting

1. Programming

Problem with aio_write() function

Hello, How to execute a call back function after aio_write() or aio_read() in Sun Solaris 5.7? I have filled the control block struct aiocb as follows: aio_sigevent.sigev_signo = SIGEV aio_sigevent.sigev_notify = SIGEV_THREAD Then I have filled the call back function in ... (0 Replies)
Discussion started by: hmurali
0 Replies

2. Shell Programming and Scripting

problem in awk int() function

awk -vwgt=$vWeight -vfac=$vFactor ' BEGIN { printf("wgt:" wgt "\n"); printf("factor:" fac "\n"); total = sprintf("%.0f", wgt * fac); total2 = sprintf("%.0f", int(wgt * fac)); printf("total:" total "\n"); printf("total2:" total2 "\n"); } ' if vWeight=326.4 vFactor=100 the result... (2 Replies)
Discussion started by: qa.bingo
2 Replies

3. Shell Programming and Scripting

awk , function call problem

#!/bin/bash awk ' function ad(t,r){ return (t+r); } BEGIN{ print ad(5,3); } { print ad(5,3); } ' Doesn't print anything for the last print ad(5,3); (6 Replies)
Discussion started by: cola
6 Replies

4. Shell Programming and Scripting

Awk problem: How to express the single quote(') by using awk print function

Actually I got a list of file end with *.txt I want to use the same command apply to all the *.txt Thus I try to find out the fastest way to write those same command in a script and then want to let them run automatics. For example: I got the file below: file1.txt file2.txt file3.txt... (4 Replies)
Discussion started by: patrick87
4 Replies

5. Shell Programming and Scripting

splice function problem

Hi All, I am using splice function in for loop to delete particular element from array with one condition. my $cnt=0; foreach my $elem (@result) { if (condition){ splice(@result, $cnt, 1);} else{ $cnt++;} } Now when in array, two elements comes sequentially with the... (3 Replies)
Discussion started by: gentleDean
3 Replies

6. UNIX for Advanced & Expert Users

AWK sub function curious problem under bash

I need to detect the number of pages in a print job when it is available so I can warn users when they try to print a report much larger than they expected. Sometimes they are trying to print 1000 page reports when they thought they were getting a 10 page report. Under linux I am scanning the... (5 Replies)
Discussion started by: Max Rebo
5 Replies

7. Shell Programming and Scripting

AWK Problem in recursive function

Hi, I have a file like this SPF_HC00001|iCalcular_Monto_Minimo|--->|SPF_HC00028|pstcObtener_Monto_Minimo SPF_HC00004|iCalcular_Incrementos|--->|SPF_HC00032|pstcObtener_Num_Incrementos SPF_HC00005|iCalcular_Articulo_167_Reformado|--->|SPF_HC00031|pstcObtener_Por_CB_Inc... (2 Replies)
Discussion started by: kcoder24
2 Replies

8. UNIX for Dummies Questions & Answers

Explanation on problem "match" function awk

Hello Unix experts, If I could get any explanations on why the code below doesn't work it would be great ! My input looks like that ("|" delimited): Saaaaabbbbbccccc|ok Sdddddfffffggggg|ok The goal is, if $2 is "ok", to remove everything before the pattern given in the match function... (5 Replies)
Discussion started by: lucasvs
5 Replies

9. Shell Programming and Scripting

Function problem

hey guys, im trying to learn bourne shell atm and I'm having some issues with functions. so heres my code: #!/bin/bash ##functions memory () { free -m } space () { df -h } ip () { (5 Replies)
Discussion started by: hawkfro12
5 Replies

10. Shell Programming and Scripting

Need help on awk for printing the function name inside each function

Hi, I am having script which contains many functions. Need to print each function name at the starting of the function. Like below, functionname() { echo "functionname" commands.... } I've tried like below, func=`grep "()" scriptname | cut -d "(" -f1` for i in $func do nawk -v... (4 Replies)
Discussion started by: Sumanthsv
4 Replies
DBD::SQLite::Cookbook(3)				User Contributed Perl Documentation				  DBD::SQLite::Cookbook(3)

NAME
DBD::SQLite::Cookbook - The DBD::SQLite Cookbook DESCRIPTION
This is the DBD::SQLite cookbook. It is intended to provide a place to keep a variety of functions and formals for use in callback APIs in DBD::SQLite. Variance This is a simple aggregate function which returns a variance. It is adapted from an example implementation in pysqlite. package variance; sub new { bless [], shift; } sub step { my ( $self, $value ) = @_; push @$self, $value; } sub finalize { my $self = $_[0]; my $n = @$self; # Variance is NULL unless there is more than one row return undef unless $n || $n == 1; my $mu = 0; foreach my $v ( @$self ) { $mu += $v; } $mu /= $n; my $sigma = 0; foreach my $v ( @$self ) { $sigma += ($x - $mu)**2; } $sigma = $sigma / ($n - 1); return $sigma; } # NOTE: If you use an older DBI (< 1.608), # use $dbh->func(..., "create_aggregate") instead. $dbh->sqlite_create_aggregate( "variance", 1, 'variance' ); The function can then be used as: SELECT group_name, variance(score) FROM results GROUP BY group_name; Variance (Memory Efficient) A more efficient variance function, optimized for memory usage at the expense of precision: package variance2; my $sum = 0; my $count = 0; my %hash; sub new { bless [], shift; } sub step { my ( $self, $value ) = @_; # by truncating and hashing, we can comsume many more data points $value = int($value); # change depending on need for precision # use sprintf for arbitrary fp precision if (defined $hash{$value}) { $hash{$value}++; } else { $hash{$value} = 1; } $sum += $value; $count++; } sub finalize { my $self = $_[0]; # Variance is NULL unless there is more than one row return undef unless $count > 1; # calculate avg my $mu = $sum / $count; my $sigma = 0; foreach my $h (keys %hash) { $sigma += (($h - $mu)**2) * $hash{$h}; } $sigma = $sigma / ($count - 1); return $sigma; } The function can then be used as: SELECT group_name, variance2(score) FROM results GROUP BY group_name; Variance (Highly Scalable) A third variable implementation, designed for arbitrarily large data sets: package variance; my $mu = 0; my $count = 0; my $S = 0 sub new { bless [], shift; } sub step { my ( $self, $value ) = @_; $count++; $delta = $value - $mu; $mu = $mu + $delta/$count $S = $S + $delta*($value - $mu); } sub finalize { my $self = $_[0]; return $S / ($count - 1); } The function can then be used as: SELECT group_name, variance3(score) FROM results GROUP BY group_name; SUPPORT
Bugs should be reported via the CPAN bug tracker at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=DBD-SQLite <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=DBD-SQLite> TO DO
* Add more and varied cookbook recipes, until we have enough to turn them into a seperate CPAN distribution. * Create a series of tests scripts that validate the cookbook recipies. AUTHOR
Adam Kennedy <adamk@cpan.org> COPYRIGHT
Copyright 2009 Adam Kennedy. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of the license can be found in the LICENSE file included with this module. perl v5.12.1 2010-01-08 DBD::SQLite::Cookbook(3)
All times are GMT -4. The time now is 01:03 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy