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

如何在ADB Shell中无需awk筛选制表数据?附安卓设备收发字节获取示例

无需awk筛选/proc/net/dev中网卡收发字节数据的方法

嘿,我来帮你解决这个没有awk的问题!在ADB Shell环境下处理/proc/net/dev里的网卡收发字节数据,我们可以用系统内置的shell工具或者sed、cut这类大概率预装的工具来替代awk,下面给你几个实用的方案:

方案一:tr + cut组合(最简单易读)

这个方案利用tr压缩连续空格,再用cut提取指定字段,兼容性很好:

cat /proc/net/dev | grep -v "Inter-\|face" | tr -s ' ' | cut -d' ' -f1,2,10

命令解释:

  • grep -v "Inter-\|face":过滤掉开头的表头行
  • tr -s ' ':把行内的连续空格压缩成单个空格,避免cut识别错误的字段
  • cut -d' ' -f1,2,10:以空格为分隔符,提取第1列(网卡名称)、第2列(接收字节数)、第10列(发送字节数)

执行后你会得到类似这样的输出:

rmnet_ipa0: 0 0
r_rmnet_data7: 0 0
wlan0: 6720980481 123456789

方案二:sed预处理 + cut

如果你的环境里tr不太好用,也可以用sed来完成空格压缩和表头过滤:

cat /proc/net/dev | sed -e '/Inter-\|face/d' -e 's/^ *//' -e 's/  */ /g' | cut -d' ' -f1,2,10

命令解释:

  • sed -e '/Inter-\|face/d':删除包含表头关键词的行
  • s/^ *//:去掉行首的多余空格
  • s/ */ /g:把所有连续空格替换成单个空格
  • 最后同样用cut提取需要的字段

方案三:纯Shell内置命令(极端兼容场景)

如果你的ADB Shell里连sed、cut都没有,那就用Shell自带的循环和参数拆分功能,完全不需要外部工具:

cat /proc/net/dev | while read line; do
    # 只处理带冒号的网卡行,跳过表头
    if echo "$line" | grep -q ":" && ! echo "$line" | grep -q "Inter-\|face"; then
        # 把行内容拆分成位置参数
        set -- $line
        echo "$1 接收字节: $2 | 发送字节: $10"
    fi
done

这个方案会输出更友好的格式化结果,比如:

rmnet_ipa0: 接收字节: 0 | 发送字节: 0
wlan0: 接收字节: 6720980481 | 发送字节: 123456789

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:31:06