You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用awk筛选第二个或第三个字符为元音的单词?解决漏匹配问题

解决awk筛选单词的问题

需求回顾

从t.txt中筛选出**第二个字符或第三个字符为元音(a、e、i、o、u)**的单词,t.txt内容:

test
platform
axis
welcome
option

原命令的问题

原命令awk 'substr($0,2,1) == "e" {print $0}' t.txt仅匹配了第二个字符为e的情况,既没有覆盖全部元音,也未考虑第三个字符为元音的场景,因此漏掉了platform(第三个字符为a)和axis(第三个字符为i)。

正确命令及说明

方法1:用substr结合正则匹配

awk 'substr($0,2,1) ~ /[aeiou]/ || substr($0,3,1) ~ /[aeiou]/' t.txt
  • substr($0,2,1)提取第二个字符,~ /[aeiou]/判断该字符是否属于元音集合
  • substr($0,3,1)提取第三个字符,同样判断是否为元音
  • ||表示逻辑或,满足任一条件即输出该行

方法2:用整行正则匹配更简洁

awk '/^.[aeiou]/ || /^..[aeiou]/' t.txt
  • ^.[aeiou]:匹配行首后第二个字符为元音的情况(^表示行首,.匹配任意单个字符)
  • ^..[aeiou]:匹配行首后第三个字符为元音的情况
  • 通过||实现“或”逻辑,满足任一规则即输出

执行结果

运行上述命令后,输出符合条件的单词:

test
platform
axis
welcome

内容的提问来源于stack exchange,提问作者shantanuo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:10:25