我有一个格式低于日期的日志文件。 我在编写以下场景的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
预期产出: 总存在的所有行和总数> 100
{ "_id" : "xyz", "total" : 180 }
答案 0 :(得分:2)
您尝试测试的字段从一开始就不是第9个字段,但从结尾开始始终为1:
$ awk '/total/ && ($(NF-1) > 100)' file
{ "_id" : "xyz", "total" : 180 }
答案 1 :(得分:0)
你问awk但是grep可以更简单一些:
grep '"total" *: *[0-9]\{3,\} *}$' input
如果total是一个唯一键,这也应该有效:
grep '"total" *: *[0-9]\{3,\}' input
这些也可以打印,例如011,但必要时可以修复。