awk - awk 命令打印 unix 文件中存在模式且找到的模式后的数值大于 100 的所有行
问题描述
我有一个具有以下格式的日志文件。我在为以下场景编写 unix 命令时遇到问题:
日志中的行
—---count of xyz
{ "_id" : "xyz", "total" : 70 }
{ "_id" : "def", "total" : 100 }
{ "_id" : "xyz", "total" : 180 }
—Count of abcd
{ "_id" : [ "ABCD" ], "total" : 94 }
{ "_id" : [ "EFGH" ], "total" : 94 }
我正在使用以下命令仅打印总计大于 100 的行。但它没有按预期工作。我们怎样才能做到这一点?
My command is
grep "total" abcd.log | awk '$9 > 50 {print ;}' | more
预期输出:total 存在且总计 > 100 的所有行
{ "_id" : "xyz", "total" : 180 }
解决方案
您尝试测试的字段并不总是从一开始就排在第 9 位,但从最后开始总是排在第 1 位:
$ awk '/total/ && ($(NF-1) > 100)' file
{ "_id" : "xyz", "total" : 180 }
推荐阅读
- r - 如何解决 RedHat Linux Distro 上 rgdal、bit64 和 dplyr 干扰引起的错误
- jquery - 添加页面加载
- node.js - Mongoose - 链接到相同类型的嵌套子文档
- javascript - JavaScript,通过自定义数据 ID 查找子 DIV
- c# - 生成时对 Prefab 的文本 GameObject 引用
- networking - DCHP 地址对我的代码是否透明?
- java - 如何为android绑定多个不同的服务?
- wordpress - 如何仅为单页添加 WordPress 后退按钮
- c# - 为什么安全规则不适用于 Firebase-Unity 中的特定用户?
- c++ - 使用 C++ fmtlib,有没有比使用 std::ostringstream 更简洁的方法将数据序列附加到字符串?