首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWK变量问题

AWK变量问题
EN

Stack Overflow用户
提问于 2013-04-29 23:56:17
回答 2查看 166关注 0票数 0

awk中的变量不返回结果。

我正在尝试使用awk从文件中获取匹配值的下一行。它在没有变量的情况下工作得很好。谢谢。

代码语言:javascript
运行
复制
$ cat file
name=bobk
snm=sahh
emp=bklc
jdate=879
$
$ awk '/name/{getline; print}' file
snm=sahh   ---------> Got the result
$
$ export MYVAR=name
$
$ echo $MYVAR
name
$
$  awk -v AVAR=${MYVAR} '/AVAR/{getline; print}' file
$   ---------> No result
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-29 23:59:28

您需要对整行$0使用正则表达式匹配运算符~,因为/AVAR/匹配的是字符串AVAR而不是变量AVAR

代码语言:javascript
运行
复制
$ awk -v AVAR=${MYVAR} '$0~AVAR{getline; print}' file
snm=sahh
票数 3
EN

Stack Overflow用户

发布于 2015-10-24 07:49:21

使用AWK变量传递参数的意图几乎总是清晰的;然而,在这个特定的例子中,生成的脚本比它需要的要复杂一些--而且打破规则实际上可能更容易理解和与他人交流。

使用双引号对脚本进行转义时,不需要使用额外的AWK变量。如果我们把shell变量放在/中,就不需要{}:

代码语言:javascript
运行
复制
$ awk "/$MYVAR/ {getline; print}" file
snm=sahh
$
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16283018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档