可以通过命令行向awk中传递参数。

这样子传递进去的参数,在awk命令中可以访问。每一项都必须作为单一的一个参数来解释。所以,等号之间不能有空格。

比如说我们传递进去一个学生名字,想查这个学生的得分。

看例子:

  1. zoer@ubuntu:~$ cat data
  2. naughty 500
  3. cc 400
  4. zoer 100
  5. zoer@ubuntu:~$ awk -f a name=naughty data
  6. 500

输入 学生姓名是naughty,那么awk命令查询到naughty的行,就输出成绩。

--------------------------------

当然也可以使用这种命令行参数指定系统变量,比如说指定FS

  1. zoer@ubuntu:~$ cat data
  2. naughty,500
  3. cc,400
  4. zoer,100
  5. zoer@ubuntu:~$ awk -f a FS=',' name=naughty data
  6. 500

注意:

命令行参数的一个很重要的限制是:

他们在BEGIN过程中是用不到的。也就是说,直到首行输入完成以后,他们才可用。

但是,可以通过增加一个-v参数让awk在执行BEGIN之前得到变量的值。命令行中每一个指定的变量都需要一个-v参数。

比如下例子:

  1. zoer@ubuntu:~$ awk -v name=ddd 'BEGIN{print name}{print $0}' data
  2. ddd
  3. naughty,500
  4. cc,400
  5. zoer,100

使用了-v。传入的参数是name=ddd。在BEGIN中也打印出来了。如果不使用-v,结果如下:

  1. zoer@ubuntu:~$ awk name=ddd 'BEGIN{print name}{print $0}' data
  2. awk: cmd. line:1: fatal: cannot open file `BEGIN{print name}{print $0}' for reading (No such file or directory)

-----------------------------------

文章最后用例子来证明每个传入的变量都需要-v参数。

  1. zoer@ubuntu:~$ awk -v name=ddd -v age=33 'BEGIN{print name;print age;}{print $0}' data
  2. ddd
  3. 33
  4. naughty,500
  5. cc,400
  6. zoer,100
  7. zoer@ubuntu:~$ awk -v name=ddd age=33 'BEGIN{print name;print age;}{print $0}' data
  8. awk: cmd. line:1: fatal: cannot open file `BEGIN{print name;print age;}{print $0}' for reading (No such file or directory)

linux下面得小数计算的更多相关文章

  1. shell的数值计算,小数计算

    shell脚本中,可以进行数值计算, 如加减乘除,通过expr.let.(())等完成,文章介绍:http://blog.csdn.net/longshenlmj/article/details/14 ...

  2. Java编程的逻辑 (5) - 小数计算为什么会出错?

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

  3. 【Java】使用BigDecimal类进行精确小数计算

    在商业计算中(尤其是计算价格)需要使用BigDecimal类来进行精确小数计算,因为用其他类型计算(如double)得到的结果不是精确的! 写个测试类. import org.junit.Test; ...

  4. java用double和float进行小数计算精度不准确

    java用double和float进行小数计算精度不准确 大多数情况下,使用double和float计算的结果是准确的,但是在一些精度要求很高的系统中或者已知的小数计算得到的结果会不准确,这种问题是非 ...

  5. LINUX上一个命令计算PI

    Linux上一个命令计算PI – 笑遍世界 http://smilejay.com/2017/11/calculate-pi-with-linux-command/ [root@d1 goEcho]# ...

  6. YTU 2577: 小数计算——结构体

    2577: 小数计算--结构体 时间限制: 1 Sec  内存限制: 128 MB 提交: 978  解决: 647 题目描述 小数可以看成是一个点和两个数组成的,因此可以定义成一个小数的结构体,现在 ...

  7. [fw]Linux系统使用time计算命令执行的时间

    Linux系统使用time计算命令执行的时间 当测试一个程序或比较不同算法时,执行时间是非常重要的,一个好的算法应该是用时最短的.所有类UNIX系统都包含time命令,使用这个命令可以统计时间消耗.例 ...

  8. 0.1+0.2不等于0.3,微信小程序云开发如何解决JavaScript小数计算精度失准的问题

    先看图 这个是JavaScript语言自身存在的一个问题.说道这里不得不提一下网上流传的JavaScript搞笑图 我们在使用云开发来开发微信小程序的时候,会经常遇到JavaScript小数计算精度失 ...

  9. 【转】FPGA内部小数计算

    FPGA内部计算小数  [转载] 谓定点小数,就是小数点的位置是固定的.我们是要用整数来表示定点小数,由于小数点的位置是固定的,所以就没有必要储存它(如果储存了小数点的位置,那就是浮点数了).既然没有 ...

随机推荐

  1. 利用Python玩微信跳一跳

    创建python项目jump_weixin,新建python程序jump.py 需要4个辅助文件[adb.exe,AdbWinApi.dll,AdbWinUsbApi.dll,fastboot.exe ...

  2. 安装VS2012出问题后,反复重启电脑。

    安装VS2012在装 VC++相关部分时出了问题,自动重启了. 重启后安装仍重启. 系统设置里取消了“自动重启”, 出现0x000000F4,网上搜索下,说是和硬盘有关,电源线.数据线.或电源不稳. ...

  3. Extjs下拉多选框

    //------录入时间,下拉列表框------ var inputTimeRow = new Ext.data.Record.create([ { name : 'value' },{ name : ...

  4. linux 信号处理 四

    一.信号生命周期 从信号发送到信号处理函数的执行完毕 对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个重要的阶段,这三个阶段由四个重要事件来刻画:信号诞生:信号在进程 ...

  5. make dep

    在配置好内核后就是编译内核了,在编译之前首先应该执行make dep命令建立好依赖关系,该命令将会修改linux中每个子目录下的.depend文件,该文件包含了该目录下每个目标文件所需要的头文件(绝对 ...

  6. json_encode 中文 null

    今天使用json_encode 结果中文变成了null 原来是编码的问题. 将编码由 GBK 转成utf-8的就可以了 iconv('gb2312','utf-8', '中文');

  7. Celery 异步定时周期任务

    1/什么是Celery Celery 是基于Python实现的模块,用于执行异步定时周期任务的 其结构的组成是由 1.用户任务app 2.管道 broker 用于存储任务 官方推荐 redis rab ...

  8. java对含有中文的字符串进行Unicode编码

    public class MyUtil { public static void main(String[] args) throws Exception { String s = "a中a ...

  9. DOM操作之属性和样式操作

    在DOM操作,除了前面的节点操作以外,常常被用到的操作还有属性操作和节点操作,下面,主要来总结一下jQuery中的属性操作方法和样式操作方法. 在开始操作前,我们需要先在html中添加如下代码,后面所 ...

  10. 使用postman模拟appium的http请求

    Appium是Server,接收http请求,使用Postman模拟请求 1.anyproxy 1.1.安装和运行 #安装 npm i -g anyproxy # 运行anyproxy,端口默认800 ...