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

时间:2016-03-08 12:03:20

标签: awk gawk

我必须提取几个单词的最后一个音节。

这些词总是以辅音结尾。

可能的辅音是这样的:“b c cs d dz dzs f g gy h j k l ly y ny p q s s s t t t v v w x y z zs”

可能的元音是这样的:“a ouöüeiáóúőűéí”

鉴于这个词,“vélemény”,我必须提取ény

鉴于这个词,“otth ion ”,我必须提取离子

鉴于这个词,“非常 ”,我必须提取

我已经制作了这个函数,它会返回最后一个元音的位置。但是如果两个元音在一起怎么办?

vélemény    ény
otthion    ion
feladat    at

    [DataMember]
    public List<PosMenuCategory> categories { get; set; }

期望的输出:

Vec_<Tp>

1 个答案:

答案 0 :(得分:2)

$ awk 'match($0,/[aouöüeiáóúőűéí]+[^aouöüeiáóúőűéí]+$/,a){print $0, a[0]}' file
vélemény ény
otthion ion
feladat at

以上使用GNU awk为第3个arg匹配()。其他问题就是:

$ awk 'match($0,/[aouöüeiáóúőűéí]+[^aouöüeiáóúőűéí]+$/){print $0, substr($0,RSTART,RLENGTH)}' file
vélemény ény
otthion ion
feladat at

使用某些awks,您可以使用等价类,而不是列出每个元音的每个可能的变体:

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

但GNU awk不支持等价类。