问题描述
我有一个(大概)简单的查询,例如: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
应该可以解决问题。