微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWK使用函数变量

如何解决AWK使用函数变量

我有一个(大概)简单的查询,例如:AWK。我正在构建一个使用函数定义的变量作为过滤器来选择我的行的函数

function myfc
 br=$1
 echo $br
 awk '{$2=="$br"}' infile > outfile
myfc ZZ

因此,我的myfc函数应从$ 2 = ZZ中选择所有行。但是没有。 echo $br确实返回ZZ,但是{$2=="$br"}似乎没有选择所需的行。我尝试了几种在{$2=="$br"}添加/删除引号的方法,但都无济于事。

我有什么提示吗?

解决方法

我不确定您使用的是什么shell,但是在基本的sh中:

function myfc { awk -v br=$1 '$2==br { print "Hi " $2 " and " $1 }'; }

检测字段2是何时作为myfc的参数给出的值;如下所示:

printf "t zz\ns yy\nu aa\n" | myfc zz

产生:

Hi zz and t

因此,要匹配您的用例:

myfc ZZ < infile > outfile

应该可以解决问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。