在 awk 中使用变量

kek*_*eke 2 awk

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

awk 'length == 2' mydict.txt | wc -l
Run Code Online (Sandbox Code Playgroud)

这段代码给出了我想要的,但如果尝试放置变量而不是数字 2,它就不起作用。代码是这样的

awk 'length == $var' mydict.txt | wc -l
Run Code Online (Sandbox Code Playgroud)

终端打印 0。我能做什么?

pLu*_*umo 5

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

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

更好地分配一个awk变量-v

awk -v var="$var" 'length == var' mydict.txt | wc -l
Run Code Online (Sandbox Code Playgroud)

然而,没有必要wc -lawk可以为你做到这一点:

awk -v var="$var" 'length == var{n++} END{print n}' mydict.txt
Run Code Online (Sandbox Code Playgroud)

您还可以使用grep -c

grep -c "^.\{$var\}\$" mydict.txt
Run Code Online (Sandbox Code Playgroud)