AWK - 计算单词

时间:2016-03-10 15:29:05

标签: regex awk

我需要知道单词是单音节还是多音节。我要申请找出的方法是计算元音的块数。

我尝试使用这个正则表达式,但是对所有单词都没有好用 number_of_vowels=match($1,"[aouöüeiáóúőűéí]?[aouöüeiáóúőűéí]");

könyvtaár
könyvter
hozzászóles
mű
cikk
ős

期望的输出

könyvtaár    2    polysyllabic
könyvter    2     polysyllabic   
hozzászóles    4    polysyllabic
mű    1    monosyllabic
cikk    1    monosyllabic
ős    1    monosyllabic

现在我正在使用这个正则表达式

a=match($1,"[aouöüeiáóúőűéí]+");

对于这个词“hozzászóles”,它给了我2,而不是4。

有关详细信息,请参阅de "b c cs d dz dzs f g gy h j k l ly m n ny p q r s sz t ty v w x y z zs"

2 个答案:

答案 0 :(得分:2)

您可以使用此awk命令:

awk -F '[aouöüeiáóúőűéí]+' 'NF{
        print $0, NF-1, (NF>2) ? "polysyllabic" : "monosyllabic"}' file | column -t

<强>输出:

könyvtaár    2  polysyllabic
könyvter     2  polysyllabic
hozzászóles  4  polysyllabic
mű           1  monosyllabic
cikk         1  monosyllabic
ős           1  monosyllabic

答案 1 :(得分:0)

如果您想使用awk函数来计算regep的出现次数(例如,如果它是较大脚本的一部分)那么您需要使用split()gsub(),而不是{ {1}}:

match()

但如果您不需要执行此功能,那么只需使用@ anubhava的方法。