shell学习6--awk的编程结构--变量

      作为一个处理数据的高效语言,awk支持脚本输入使得编程变得便利。我们来看看awk的基本编程结构--变量。
     变量:awk中支持数值变量和字符串变量,支持默认初始化和强制类型类型转换。
            注意:awk中的变量是无需声明直接使用的,到底是哪一个类型是由上下文来决定的。
                        未经初始化的变量值是0或者"" (空字符串),究竟是哪个是也根据上下文决定的。
                               name="Tom"    #name是字符串
                              x++                    #x是数值,它被初始化为0,然后+1
                          字符串强制转换成数字:name+0
                          数字转换成字符串:       number " "

            1.  用户自定义变量:用户自定义的字符串可以由数字,字母和下划线构成,但是不能以数字开头。    格式:variable = expression
           用户自定义的变量也是不用声明直接使用的。默认初始化也是根据上下文决定为0还是" "的。
           支持命令行中自定义参数的输入,就好像在脚本中生成一样。
                  awk  -f  awkscript    month=4   year=2013   filename
                   #month  year就可以以输入值在awkscript中直接使用,但不能在BEGIN模块中使用。

             2. 字段变量:也可以像自定义变量那样使用,区别在于它们的初始化是引用的某个记录或者字段。可以重新赋值运算,转换类型等。
                      $0 整行记录
                      $1 第一个字段  
                      $2 第二个字段等
                      eg:awk '{$5=1000*$3+$4; print}'  file1
                 注意:如果某个字段在记录中不存在的,那个那个字段使用时是被赋予空字符串的。
                      如:第二行分割成只有 5个字段,那么 $6=" " 

             3. 内置变量:内置变量的名字都是大写的。他们可以用于表达式也可以被重新赋值。
                       常用的内置变量:
                        FS                输入记录的字段分割符,默认为空格,可多个并列
                        RS                输入记录的分隔符,默认是换行号("\n")
                        OFS             输出记录时字段的分隔符,默认是空格
                        ORS             输出记录的分割符,默认是换行符
                        NF                输入记录被分割成的字段数
                        NR               当前输入记录的个数(不一定是行数,因为输入分割符不一定是换行号)
                        FNR             当前文件的总记录数
                        FILENAME  当前处理的文件名   
                        ARGC          命令行输入参数的数目
                        ARGV          命令行输入参数的数组 (类似于java中main函数的 args[ ] 参数)    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值