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

如何将Tshark输出的单行数据拆分转换为对应键值对

Tshark单行输出转键值对实现方案

核心逻辑是拆分tshark输出的竖线左右两侧的键、值列表,逐字段配对输出,用awk即可实现,无需复杂脚本。


方案1:输出空格分隔的a,1 b,2 c,3格式

处理命令如下,可直接接在tshark命令后管道运行,也可处理已导出的文本文件:

# 处理已导出的tshark输出文件
awk -F ' *\\| *' '{
    split($1, keys, /,/)
    split($2, vals, /,/)
    res = ""
    for(i=1; i<=length(keys); i++){
        res = res keys[i] "," vals[i] " "
    }
    print substr(res, 1, length(res)-1)
}' tshark_output.txt

# 直接对接tshark命令
tshark [你的tshark运行参数] | awk -F ' *\\| *' '{split($1,k,/,/);split($2,v,/,/);for(i=1;i<=length(k);i++) printf "%s,%s ",k[i],v[i];print ""}'

方案2:输出[{a,1},{b,2}]类数组配对格式

调整awk的输出格式即可:

awk -F ' *\\| *' '{
    split($1, keys, /,/)
    split($2, vals, /,/)
    printf "["
    for(i=1; i<=length(keys); i++){
        printf "{%s,%s}", keys[i], vals[i]
        if(i < length(keys)) printf ","
    }
    printf "]\n"
}' tshark_output.txt

如果需要标准JSON格式,把输出部分改为printf "{\"%s\":\"%s\"}"即可,输出结果为[{"a":"1"},{"b":"2"}]。


适配提示

如果你的tshark输出字段本身包含逗号、竖线,可先通过tshark的-E separator=参数指定特殊分隔符(比如#),再调整awk的-F参数对应分隔符即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:36:03