在 awk 中使用变量

在 awk 中使用变量

你好,我想计算特定长度的单词数量。我正在使用这个命令。

awk 'length == 2' mydict.txt | wc -l

这段代码给出了我想要的结果,但如果尝试用变量代替数字 2,它就不起作用。代码如下

awk 'length == $var' mydict.txt | wc -l

终端打印 0。我该怎么办?

答案1

变量不会在单引号 ( ') 中扩展。

通常,您可以简单地使用双引号("),但对于awk,这不是一个好的解决方案,因为它会导致awk代码稍微复杂一些的问题。

最好使用以下命令分配awk变量-v

awk -v var="$var" 'length == var' mydict.txt | wc -l

但是,没有必要wc -lawk可以为您做到这一点:

awk -v var="$var" 'length == var{n++} END{print n}' mydict.txt

您还可以使用grep -c

grep -c "^.\{$var\}\$" mydict.txt

相关内容