linux下提取日志文件中的某一行JSON数据中的指定Key

背景

今天在定位问题时,通过日志打印出来调用第三方接口的返回结果对象的值,但因为这个返回信息太多,导致日志打印时对应的这行日志翻了四五屏才结束,这种情况下不好复制粘贴出来去具体分析返回结果对象,主要是我们需要针对返回的json对象提取对应的key去进行分析查询。

提取

  1. vim logs/service.log打开对应的日志文件,然后:set nu设置行号显示,得到对应的日志所在行号为73019
  2. 使用sed -n "开始行,结束行p" filename将对应的日志打印出来。sed -n "73019,73019p" logs/service.log,过滤得到我们所需要的日志行。
  3. 将对应的日志保存到文件中,方便我们分析。sed -n "73019,73019p" logs/service.log > 20220616.log
  4. 使用sz命令,将文件下载到本地进行后续处理。sz 20220616.log
  5. 使用Nodepad++打开json文件,此时打开文件还是一行数据,我们需要将json数据进行格式化,变成多行。【插件】->【JSON Viewer】->【Format JSON】
  6. 过滤出指定Key所在的行,grep imei 20220616.log > 20220616_imei.log
  7. 最终得到了我们想要的数据。

本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。

首发链接:https://www.cnblogs.com/lingyejun/p/16384144.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java的IO流和JSON库来实现替换文件最后一行JSON数据。 首先,使用Java的IO流读取文件并将每行数据存储在一个List: ```java List<String> lines = Files.readAllLines(Paths.get("file.json"), StandardCharsets.UTF_8); ``` 然后,取出最后一行数据: ```java String lastLine = lines.get(lines.size() - 1); ``` 接着,将最后一行数据转换为JSON对象: ```java JSONObject json = new JSONObject(lastLine); ``` 接下来,对JSON对象进行修改或替换操作。 最后,将修改后的JSON对象重新转换为字符串格式,并将其替换原先的最后一行数据: ```java lines.set(lines.size() - 1, json.toString()); ``` 最后,将修改后的数据写入文件: ```java Files.write(Paths.get("file.json"), lines, StandardCharsets.UTF_8); ``` 完整代码示例: ```java import org.json.JSONObject; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; public class Main { public static void main(String[] args) throws Exception { List<String> lines = Files.readAllLines(Paths.get("file.json"), StandardCharsets.UTF_8); String lastLine = lines.get(lines.size() - 1); JSONObject json = new JSONObject(lastLine); json.put("key", "value"); // 修改或替换操作 lines.set(lines.size() - 1, json.toString()); Files.write(Paths.get("file.json"), lines, StandardCharsets.UTF_8); } } ``` 注意:以上代码仅适用于文件最后一行JSON数据的情况,如果最后一行不是JSON数据,则需要进行额外的判断和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值