如何解决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 举报,一经查实,本站将立刻删除。