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

如何用Awk提取Bash中匹配指定模式后的第2个单词?

使用Awk提取指定模式后第2个单词的方法

直接用下面的Awk命令就能实现需求:

awk '{for(i=1;i<=NF;i++){if($i=="PATTERN" && i+2<=NF) print $(i+2)}}' input.txt

命令解释

  • NF是Awk的内置变量,表示当前行的字段总数,用for循环遍历每一行的每个字段
  • 当遍历到字段$i等于指定的PATTERN时,先判断i+2是否不超过当前行的字段数(防止索引越界报错)
  • 满足条件就输出$(i+2),也就是PATTERN所在位置之后的第2个单词

针对你的示例测试

假设你的示例文本保存在input.txt中,运行上述命令后,会输出:

PRINT_THIS
PRINT_THIS
PRINT_THIS
PRINT_THIS

完全符合你的期望。

扩展:支持正则匹配模式

如果你的PATTERN需要用正则表达式匹配(比如匹配包含特定字符的字段),把判断条件改成正则匹配即可:

awk '{for(i=1;i<=NF;i++){if($i ~ /PATTERN/ && i+2<=NF) print $(i+2)}}' input.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:20:14