可以通过命令行向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. ASP.NET网站权限设计实现(一)——使用PowerDesigner进行数据库设计

    这里用PowerDesigner做一个初步的设计,后面可能会有修改. 1.启动PowerDesigner新建物理数据模型 2.工具栏 3.新建表模型 4.添加第一张表,可以双击表或右键菜单打开下面窗口 ...

  2. NSWindow添加NSViewController

    大概这样,笔记一下,防止忘记 - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { MyViewControl ...

  3. view的setTag() 和 getTag()应用 ViewHolder

    转自 http://www.cnblogs.com/qingblog/archive/2012/07/03/2575140.html View中的setTag(Onbect)表示给View添加一个格外 ...

  4. 学习笔记之IKM C++ 11

    https://github.com/haotang923/interview/tree/master/IKM Q1. If most of the calls to function foo() b ...

  5. override的实现原理

    转载 http://blog.csdn.net/fan2012huan/article/details/51007517 基于基类的调用和基于接口的调用,从性能上来讲,基于基类的调用性能更高 .因为i ...

  6. [UE4]场景光照改进PostProcessVolume

    PostProcessVolume可以做的效果很多,其中就可以实现太阳光斑效果. Unbound勾上上,就表示不受“PostProcessVolume”组件的大小限制,直接应用到整个世界.如果不勾选, ...

  7. Spark分析之TaskScheduler

    TaskScheduler概述: TaskScheduler是一个可插拔任务调度接口,通过不同的SchedulerBackend进行任务的调度.主要功能如下: 1.一个TaskScheduler只为一 ...

  8. 在 Linux 下使用mdadm创建 RAID 5

    在 RAID 5 中,数据条带化后存储在分布式奇偶校验的多个磁盘上.分布式奇偶校验的条带化意味着它将奇偶校验信息和条带化数据分布在多个磁盘上,这样会有很好的数据冗余. 在 Linux 中配置 RAID ...

  9. python学习之----初见网络爬虫(输出整个网页html的代码)

    from urllib import urlopen html = urlopen('http://www.manluotuo.com') print (html.read()) 控制台输出整个网页h ...

  10. selenium自动化测试通过localstorage绕过登陆

    引言: 做自动化测试,尤其是通过page object模式做UI自动化测试,登陆是个很麻烦的事情,比如你想对某个页面进行测试,一般直接链接到那个页面是不可能的,总是需要先登陆,然后刷新页面才能到想要的 ...