首页 > 解决方案 > 根据另一行中的条件打印出特定行

问题描述

抱歉,如果这真的是基本的东西,但我刚开始使用 awk,所以我有一个输入文件,我将管道输入到 awk 中,如下所示。格式永远不会改变(如下所示)

name: Jim
gender: male
age: 40

name: Joe
gender: female
age: 36

name: frank
gender: Male
age: 40

我正在尝试列出年龄为 40 岁的所有名字

我可以像这样找到它们 awk '$2 == "40" {print $2 }'

但无法弄清楚如何打印名称

标签: awk

解决方案


您能否尝试关注(我现在正在开车,所以无法测试)。

awk '/^age/{if($NF==40){print val};val="";next}  /^name/{val=$0}'  Input_file

解释:第一个条件检查^name一行是否从它开始,然后将该行值存储在变量 val 中。然后在其他条件下检查一行是否从年龄开始;然后检查 uf 该行的第二个字段是否大于 40,然后打印变量 val 的值并将其无效。


推荐阅读