awk - 根据另一行中的条件打印出特定行
问题描述
抱歉,如果这真的是基本的东西,但我刚开始使用 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 '/^age/{if($NF==40){print val};val="";next} /^name/{val=$0}' Input_file
解释:第一个条件检查^name
一行是否从它开始,然后将该行值存储在变量 val 中。然后在其他条件下检查一行是否从年龄开始;然后检查 uf 该行的第二个字段是否大于 40,然后打印变量 val 的值并将其无效。
推荐阅读
- python - UnicodeEncodeError:“charmap”编解码器无法在位置 47 编码字符“\x9f”:字符映射到
- python - pyspellchecker:不拆分 URL
- javascript - 在 Node.js 中退出 CRTL-D 上的 CLI
- c# - 测试流的 FTP 输出
- python - Pytorch ImageNet 数据集
- python - 从无头 Pygame 实例获取图像
- r - 允许集成模型获得多类结果的 R 包?
- zeromq - ZeroMQ - 我们可以在发送消息之前检查订阅者吗?
- assembly - 调用例程后访问推送的参数
- elasticsearch - 启动 Elastic Kibana - 内部服务器 500 错误 - [illegal_argument_exception] 应用程序权限必须引用至少一个资源”}