使用awk从文本提取first_match与second_match匹配对的实现方法
问题1:仅输出每个匹配对的first_match和second_match两行
使用以下awk脚本:
awk '/first_match/{print FILENAME " - " $0; f=1} f && /second_match/{print FILENAME " - " $0; f=0}' test1.txt
逻辑说明:
- 匹配到
first_match时,直接输出带文件名前缀的当前行,同时将标记位f设为1 - 只有标记位
f为1时,才会校验是否匹配second_match,匹配成功则输出带文件名前缀的当前行,同时重置标记位f为0 - 中间无关行不会触发任何输出逻辑,自动跳过
问题2:仅输出每个匹配对中的second_match行
使用以下awk脚本:
awk '/first_match/{f=1} f && /second_match/{print FILENAME " - " $0; f=0}' test1.txt
逻辑说明:
- 匹配到
first_match时仅激活标记位f,不输出内容 - 标记位为1时匹配到
second_match才输出对应行,同时重置标记位,无前置有效first_match的second_match不会触发输出
内容的提问来源于stack exchange,提问作者Tax Max
相关产品推荐
相关产品推荐

