Рейтинг:2

использование переменной в awk

флаг cx

Здравствуйте, я хотел бы подсчитать количество слов определенной длины. Я использую эту команду.

awk 'длина == 2' mydict.txt | туалет -л

этот код дает то, что я хочу, но если попытаться поставить переменную вместо числа 2, это не сработает. Код такой

awk 'длина == $var' mydict.txt | туалет -л

и терминал печатает 0. Что я могу сделать?

αғsнιη avatar
флаг cn
дело не в том, что команда, с которой вы пришли, она не делает того, что вы сказали, «_`подсчитывает количество слов определенной длины`_», она подсчитывает количество строк, имеющих длину 2 ***символа***, но не _words_.
Рейтинг:5
флаг in

Переменные не будут раскрываться в одинарных кавычках (').

Обычно вы можете просто использовать двойные кавычки ("), но для аук, это не очень хорошее решение, потому что оно приведет к проблемам с немного более сложными аук код.

Лучше назначить аук переменная с -v:

awk -v var="$var" 'length == var' mydict.txt | туалет -л

Однако нет необходимости в туалет -л, аук может сделать это для вас:

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

Вы также можете использовать грэп -с:

grep -c "^.\{$var\}\$" mydict.txt
kekekeke avatar
флаг cx
Спасибо большое за ответы очень помогли.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.