LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1610|回复: 5

请问AWK中如何调用SHELL的函数?

[复制链接]
发表于 2003-3-28 16:41:34 | 显示全部楼层 |阅读模式
而且还要传参数。
发表于 2003-3-28 17:25:48 | 显示全部楼层
举个现成的例子,
有如下文件
javalee//home/javalee/lx>cat grades
44 55 66 22 77 99
100 22 77 99 33 66
55 66 100 99 88 45
定义如下函数
  1. javalee//home/javalee/lx>cat sorter.sc
  2. # Script is called sorter
  3. # It sorts numbers in ascending order
  4. function sort ( scores, num_elements, temp, i, j ) {
  5.     # temp, i, and j will be local and private,
  6.     # with an initial value of null.
  7.     for( i = 2; i <= num_elements ; ++i ) {
  8.         for ( j = i; scores [j-1] > scores[j]; --j ){
  9.             temp = scores[j]
  10.             scores[j] = scores[j-1]
  11.             scores[j-1] = temp
  12.         }
  13.     }
  14. }
  15. {for ( i = 1; i <= NF; i++)
  16. grades[i]=$i
  17. sort(grades, NF)    #Two arguments are passed
  18. for( j = 1; j <= NF; ++j )
  19. printf( "%d ", grades[j] )
  20. printf("\n")
  21. }
复制代码
调用了sorter.sc函数后执行的结果
javalee//home/javalee/lx>awk -f sorter.sc grades
22 44 55 66 77 99
22 33 66 77 99 100
45 55 66 88 99 100
在awk中,有很多内制的函数,如index,length,sub...等等,也可以自定义函数.像sorter.sc
awk是一种对数据和报表进行编程的语言,相关帖子见置顶[AWK与SED实例]
http://www-900.ibm.com/developer ... k/awk-3/index.shtml
 楼主| 发表于 2003-3-29 23:05:06 | 显示全部楼层
很感谢!
发表于 2003-3-30 01:25:12 | 显示全部楼层
客气!~~~其实像在AWK中最常用的PRINT,就是个最典型的函数,希望多多探讨;)
发表于 2006-4-1 17:09:30 | 显示全部楼层
avalee//home/javalee是什么意思呀,看不懂
回复 支持 反对

使用道具 举报

发表于 2006-4-1 17:15:50 | 显示全部楼层
那是kornlee兄shell的prompt
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表