You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Linux系统中分析指定格式的文件?

嘿,看起来你有一份JSON格式的通话记录文件要在Linux环境下分析,我给你几个实用的方案,都是日常工作里常用的工具,按需选择就行:

1. 使用jq(最推荐的JSON专用工具)

jq是Linux下处理JSON文件的神器,几乎能覆盖所有常规分析需求,先确保你的系统已经安装它(Debian/Ubuntu用sudo apt install jq,CentOS/RHEL用sudo yum install jq)。

针对你的通话记录结构,给几个常用分析命令:

  • 提取所有已接听的通话记录:
    jq '.report[] | select(.status == "Answered")' your_file.json
    
  • 提取所有通话的号码和通话时长:
    jq '.report[] | {number: .number, duration: .duration}' your_file.json
    
  • 按通话时间排序记录:
    jq '.report | sort_by(.call_time)' your_file.json
    
  • 统计已接听通话的总数量:
    jq '[.report[] | select(.status == "Answered")] | length' your_file.json
    
2. 使用Python脚本(适合复杂定制化分析)

如果需要更深入的分析,比如把通话时长转换成总秒数、统计不同号码的通话次数,Python会更灵活。下面是一个示例脚本:

import json

# 读取JSON文件
with open('your_file.json', 'r') as f:
    data = json.load(f)

total_duration = 0
call_count = {}

for call in data['report']:
    # 把时长"mm:ss"转换成秒
    mins, secs = call['duration'].split(':')
    duration_sec = int(mins)*60 + int(secs)
    total_duration += duration_sec

    # 统计每个号码的通话次数
    number = call['number']
    call_count[number] = call_count.get(number, 0) + 1

print(f"总通话时长(秒):{total_duration}")
print("各号码通话次数:")
for num, cnt in call_count.items():
    print(f"{num}: {cnt}次")

保存成analyze_calls.py,然后运行:

python3 analyze_calls.py
3. 使用awk(适合简单文本提取,熟悉awk可选)

如果你的需求只是简单提取某些字段,也可以用awk处理,不过因为是JSON格式,不如jq精准,示例:

awk -F'"' '/"number":/ {print $4}' your_file.json

这个命令会提取所有number字段的值。

内容的提问来源于stack exchange,提问作者Del

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:30:39