AWK-提取单词的最后一个音节

AWK-提取单词的最后一个音节,awk,gawk,Awk,Gawk,我得提取几个单词的最后一个音节 这些词总是以辅音结尾 可能的辅音是:“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 z” 可能的元音是:“a o uöe iáúőűéí” 有了这个词,“vélemény”,我必须提取ény 有了这个词“otthion”,我必须提取离子 有了这个词,“feladat”,我必须提取at 我已经做了这个函数,它将返回最后一个元音的位置。但是如果两个元音在一起呢 function e

我得提取几个单词的最后一个音节

这些词总是以辅音结尾

可能的辅音是:“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 z”

可能的元音是:“a o uöe iáúőűéí”

有了这个词,“vélemény”,我必须提取ény

有了这个词“otthion”,我必须提取离子

有了这个词,“feladat”,我必须提取at

我已经做了这个函数,它将返回最后一个元音的位置。但是如果两个元音在一起呢

function extrac(arr1,arr2,x1)
{
    # arr1 - array-vowels "a o u ö ü..."
    # arr2 - array-word divided into letters
    # x1 - length-arr2

    for (ix=x1; ix>0; ix--)
    {
        for (jx=1; jx<=14; jx++)
        {
            if (arr1[jx] == arr2[ix])
            {
                return ix;
            }
        }
    }

}
期望输出:

vélemény    ény
otthion    ion
feladat    at
上面使用GNU awk作为第三个要匹配的参数()。对于其他AWK,它将是:

$ awk 'match($0,/[aouöüeiáóúőűéí]+[^aouöüeiáóúőűéí]+$/){print $0, substr($0,RSTART,RLENGTH)}' file
vélemény ény
otthion ion
feladat at
对于某些AWK,您可能可以使用等价类,而不是列出每个元音的每个可能变化:

/[[=a=][=e=][=i=][=o=][=u=]]+[^[=a=][=e=][=i=][=o=][=u=]]+$/

《GNU awk》中不支持等价类,但《GNU awk》中不支持等价类,但《GNU awk》中不支持等价类。

p>好好<代码>好好<代码>好<代码>好<代码>好<代码>([奥奥奥瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦瓦约约约))州州州州州州州州州州州州州州州州州州州(((((((a:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::z | zs))(?:\s |$)works…@Thomas您正在使用三元运算符,但我不知道如何应用它来提取我需要的内容。你能给我一个用三元运算符使用其中一个单词的例子吗?你的意思是
?:
?你可以使用的正则表达式是,但我不知道它在awk中如何工作。好的,它是一个正则表达式。那对我没用。我需要的是类似于我的功能的东西。
$ awk 'match($0,/[aouöüeiáóúőűéí]+[^aouöüeiáóúőűéí]+$/){print $0, substr($0,RSTART,RLENGTH)}' file
vélemény ény
otthion ion
feladat at
/[[=a=][=e=][=i=][=o=][=u=]]+[^[=a=][=e=][=i=][=o=][=u=]]+$/