Hello I would like to count number of words with specific lengths. I’m using this command.
awk 'length == 2' mydict.txt | wc -l
this code gives what I want but if try to put variable instead of number 2 it doesnt work. The code is like this
awk 'length == $var' mydict.txt | wc -l
and terminal prints 0. What can I do
>Solution :
Variables won’t get expanded in single quotes ('
).
Normally, you could simply use double quotes ("
), but for awk
, this is not a good solution because it will lead to problems with little more complicated awk
code.
Better assign an awk
variable with -v
:
awk -v var="$var" 'length == var' mydict.txt | wc -l
However, there is no need for wc -l
, awk
can do this for you:
awk -v var="$var" 'length == var{n++} END{print n}' mydict.txt
You could also use grep -c
:
grep -c "^.\{$var\}\$" mydict.txt