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

如何通过awk的match函数实现多字符串匹配筛选记录?

用awk的match()函数匹配多个字段值的解决方案

当然可以通过awk的match()函数实现这个需求!match()支持正则表达式作为匹配模式,我们只需要把想要匹配的多个值用正则分支符|连接起来就能达到目的。

修改后的awk脚本

awk -v FPAT='([^,]*)|("[^"]*")' 'NR==1; NR>1 && match($2, /THWR|RWGW|OSPW/)'

脚本细节解释

  1. FPAT参数:保留了你原脚本中的设置,用于正确解析CSV格式(包括带引号的字段),确保逗号作为分隔符时不会错误拆分带引号的内容。
  2. NR==1:打印表头行,这个逻辑和原脚本完全一致。
  3. match($2, /THWR|RWGW|OSPW/):这里把匹配模式改成了正则表达式,THWR|RWGW|OSPW表示匹配第二列等于这三个字符串中的任意一个。match()函数会在$2中查找是否存在该正则匹配的内容,存在则返回非零值(视为逻辑真),进而触发打印该行的操作。

精确匹配的优化(可选)

如果你需要确保第二列完全等于这三个值(而不是包含它们的子串),可以给正则加上行首和行尾锚点,避免误匹配类似THWRX或RWGWP的字段:

awk -v FPAT='([^,]*)|("[^"]*")' 'NR==1; NR>1 && match($2, /^(THWR|RWGW|OSPW)$/)'

示例测试

输入内容:

col1,col2,col3
123,THWR,123
123,RWGW,123
123,OSPW,123
123,POOL,123
123,TYTY,123

输出结果:

col1,col2,col3
123,THWR,123
123,RWGW,123
123,OSPW,123

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:29:58