如何在shell脚本中将变量传给awk
来源:互联网 发布:委内瑞拉 知乎 编辑:程序博客网 时间:2024/06/05 16:24
使用shell脚本比较多,脚本中也往往会使用awk处理类似表单的文件。这就会遇到shell中的变量可能会用在awk脚本中使用,如路径,这是最有可能遇到的。
问题在于,shell脚本中的变量是不可以直接用在内嵌的awk脚本中的,虽然感觉awk就像shell的一个命令一样。
实例如:
#! /bin/bash -
...
path="/home/users/..../file"
awk -F "\t" 'BEGIN{whlie(getline<"$path">0) x[$1]=1} {...}' another.file > result.file
当我直接使用shell中的路径变量path时,我没有任何觉得不对劲的地方,但脚本执行后就是没有结果。当然,因为awk中的path非shell脚本的path。例子中awk的path其实是个未初始化的path变量!
如何将shell中的path变量传给awk脚本呢?
必须使用awk的 -v 选项,上面的例子中,在awk的执行语句之前用shell脚本中的变量初始化awk要用到的文件路径:
awk -F "\t" -v filename=$path 'BEGIN{whlie(getline<filename>0) x[$1]=1} {...}' another.file > result.file
注意:
1. 每个初始化变量都必须单独跟在一个 -v 选项之后,即 -v var1=value1 -v var2=value2 ...
2. awk也可以在执行语句之后使用var=value的方式初始化变量,但这样的变量不能用于BEGIN的action语句中。
awk -F "\t" 'BEGIN{whlie(getline<filename>0) x[$1]=1} {...}' filename=$path another.file > result.file
这条语句的执行同样得不到结果。
- 如何在shell脚本中将变量传给awk
- 如何在shell脚本里传递一个变量给awk
- 如何在shell脚本文件中获取awk的值, 存于变量中?
- 在SHELL中如何传递shell变量给awk
- 在.bat脚本中如何将一个命令的返回结果传给一个变量?
- Shell脚本内置变量 和 awk脚本内置变量 比较
- 在Shell脚本中编写AWK脚本实现数据提取—注意格式、awk中使用shell变量、awk中数字字符串转换成数字、awk中字符串相等比较
- 在shell的循环中将变量传入perl
- 脚本使用(awk,shell...)
- Shell脚本之awk
- shell 脚本学习 awk
- shell脚本---awk命令
- shell脚本-awk使用
- shell脚本之awk
- Shell awk 内置变量
- shell awk 变量传递
- awk获取Shell变量
- 如何写脚本--shell中的变量
- 关于Android NDK中调用第三方的动态库
- iphone 自定义控件
- Goldbach's Conjecture - POJ 2262 水题
- 【HR必看】互联网思维让员工的学力储蓄账户变丰富
- 工作中遇到的问题之android客户端自动生成带logo的二维码
- 如何在shell脚本中将变量传给awk
- gcc参数总结
- 分享ISTQB培训体验
- 微软对企业版Office 365新用户提价15%
- Qwt源码解读之变换类——QwtTransform、QwtNullTransform、QwtLogTransform、QwtPowerTransform
- OpenGL ES 绘制 3D 图形
- LINUX常用命令
- JSON:一种轻量级的数据交换格式
- latch free