AWK使用函数变量选择行



我有一个(可能(简单的查询re: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 zzns yynu aan" | myfc zz

生产:

Hi zz and t

因此,为了匹配您的用例:

myfc ZZ < infile > outfile

应该做到这一点。

最新更新