在 awk
中,组合模式可以用于处理输入文件中满足特定条件的一系列行。范围模式就是这种组合模式的一种形式,它允许你根据匹配的开始和结束模式来定义一个行范围,并在该范围内执行一组动作。
范围模式的基本语法是:
awk '/start_pattern/ , /end_pattern/ { actions }' file
这里:
start_pattern
是一个正则表达式或条件表达式,当匹配到这个模式时,进入范围处理。end_pattern
同样是一个正则表达式或条件表达式,匹配到这个模式时,退出范围处理。{ actions }
是在开始和结束模式之间的行上执行的命令集合。
例如,假设我们要打印从包含字符串 "START" 的行开始直到包含字符串 "END" 的行之前的所有行:
awk '/START/,/END/ { print }' input.txt
注意,这里的范围是半开半闭区间,也就是说,/START/
包含的行会被处理,而 /END/
包含的行不会被执行的 { actions }
部分。
另外,在范围模式下,如果 end_pattern
未在后续行中找到,则会一直处理到文件结尾为止。如果你希望严格包括 end_pattern
这一行,通常需要在动作块中添加额外的逻辑判断。