awk怎样自定义变量以及常用bash传递的变量
2013-07-15 00:13
585 查看
Linux服务器管理、bash脚本编写过程中经常用到awk进行数据分析,awk变量使用过程中又经常因为出现歧义或者定义不规范,导致无法得到预期的结果。本文用最简洁的例子说明awk变量如何正确的定义和使用。
1
在awk中自定义变量
通过-v参数便可以自定义变量传递给awk使用,如果是BEGIN中调用的话,变量的定义必须紧邻awk命令,如下所示:
[root@none ~]# awk -v var='bianliang' 'BEGIN{print var}'
bianliang
如果用:[root@none ~]# awk 'BEGIN{print var}' -v var='bianliang'
显示的结果将是空,因为变量定义在了BEGIN使用以后。
为了养成一个好的脚本编写习惯,建议所有的变量都使用第一种习惯,紧邻awk命令加-v参数进行变量定义
2
在awk中使用bash传递的变量
类似自定义变量,在脚本中可以轻易的用-v参数将bash的变量传递给awk,如下所示:
[root@none ~]# name=sni7
[root@none ~]# awk -v var=${name} 'BEGIN{print var}'
sni7
3
awk中定义多个变量
在定义每个变量的时候,都必须重新加入-v参数,如:
# awk -v year=2013 -v month=04 '$2 ~ year"/"month"/[0123]" {print $2,$3,$NF}' ceb2013.lst
就是说定义了year、month两个变量。
以上awk命令的含义是:匹配ceb2013.lst中,第二列为“2013/04/**”(即日期是2013年4月份某天)这样格式的内容,将第二列、第三列和最后一列打印输出。注意,$2、$3、$NF都是系统变量,系统变量是需要前缀的,但是自定义变量不需要任何前缀。
同时为了区分自定义变量和普通文本,在输出文本的时候需要使用双引号将文本引用起来。
方法/步骤
1在awk中自定义变量
通过-v参数便可以自定义变量传递给awk使用,如果是BEGIN中调用的话,变量的定义必须紧邻awk命令,如下所示:
[root@none ~]# awk -v var='bianliang' 'BEGIN{print var}'
bianliang
如果用:[root@none ~]# awk 'BEGIN{print var}' -v var='bianliang'
显示的结果将是空,因为变量定义在了BEGIN使用以后。
为了养成一个好的脚本编写习惯,建议所有的变量都使用第一种习惯,紧邻awk命令加-v参数进行变量定义
2
在awk中使用bash传递的变量
类似自定义变量,在脚本中可以轻易的用-v参数将bash的变量传递给awk,如下所示:
[root@none ~]# name=sni7
[root@none ~]# awk -v var=${name} 'BEGIN{print var}'
sni7
3
awk中定义多个变量
在定义每个变量的时候,都必须重新加入-v参数,如:
# awk -v year=2013 -v month=04 '$2 ~ year"/"month"/[0123]" {print $2,$3,$NF}' ceb2013.lst
就是说定义了year、month两个变量。
以上awk命令的含义是:匹配ceb2013.lst中,第二列为“2013/04/**”(即日期是2013年4月份某天)这样格式的内容,将第二列、第三列和最后一列打印输出。注意,$2、$3、$NF都是系统变量,系统变量是需要前缀的,但是自定义变量不需要任何前缀。
同时为了区分自定义变量和普通文本,在输出文本的时候需要使用双引号将文本引用起来。
相关文章推荐
- awk 系列:怎样使用 awk 变量、数值表达式以及赋值运算符
- awk 系列:怎样使用 awk 变量、数值表达式以及赋值运算符
- 稳扎稳打Silverlight(29) - 2.0Tip/Trick之Cookie, 自定义字体, 为程序传递参数, 自定义鼠标右键, 程序常用配置参数
- bash的常用变量
- awk中怎样用变量
- awk中使用bash中定义的变量
- Python变量传递以及内存地址的改变问题
- 使用querystring,session变量以及server.Transfer方法来实现页面间的值传递
- centOS怎样强制卸载PHP以及自定义安装PHP
- Shell(bash)脚本学习之--------内建/外建,自定义变量和环境变量
- 常用sql自定义函数以及存储过程
- php学习笔记_Smarty变量调节器以及如何自定义
- 自定义maven变量以及maven内置常量
- SHELL : 将shell变量传递给awk
- awk常用的内建变量
- awk与shell参数传递(或说变量传递)二三点
- Maven学习笔记(一)——自定义maven变量以及maven内置常量
- CRecordset类的常用成员函数 成员变量 以及操作实例
- CentOS怎样强制卸载PHP以及自定义安装PHP
- 几个模块常用的自定义变量和函数