当前位置: 首页 > news >正文

Linux字符串占用空间统计方法

这个命令:

strings your_file | awk '{total += length + 1} END {print total}'

我们来逐步解释它的含义:


一、strings your_file

这是 strings 命令,来自于 binutils 工具包。它的作用是:

从二进制文件中提取可打印的 ASCII 字符串。

也就是说,它会从 your_file 这个二进制文件中找出所有“可见的文本字符串”,一行一行输出。


二、awk '{total += length + 1} END {print total}'

这部分是 awk 脚本,对 strings 命令的输出做处理。

重点解释:
length 是什么?

awk 中,length 是一个内建函数,用于返回当前行的长度(字符串长度)。

例如:

echo "hello" | awk '{print length}'
# 输出: 5

所以在这个脚本中:

total += length + 1

表示:每一行的长度加 1(因为每行原本有个 \n 被去掉了,或者表示 null terminator \0),然后加到 total 变量中。

✅ 为什么要加 1?

这是因为 strings 提取出来的每个字符串在原文件中,应该以 null 字符 \0 结尾(这是 C 字符串的约定)。但 strings 输出的时候是按行输出的,不会显示 \0

所以如果你想估算这些字符串在原始二进制文件中实际占用的字节数,你需要把每一行的长度加上一个字节(对应 \0)。


三、最终含义总结:

strings your_file | awk '{total += length + 1} END {print total}'

这个命令的作用是:

估算 your_file 中所有以 null 结尾的可打印字符串在文件中总共占用了多少字节。

  • length 来自 awk,表示当前行的长度。
  • 每行加 1,是因为在二进制中这些字符串是以 \0 结尾的。
  • total 累加所有行的长度 + 1,最后输出这个总字节数。

相关文章:

  • Web APIS Day01
  • python训练营打卡第49天
  • Spring是如何实现无代理对象的循环依赖
  • 企业签名.
  • GeoDrive:基于三维几何信息有精确动作控制的驾驶世界模型
  • 5G 智慧工业园区解决方案
  • 永久磁铁的特点有哪些
  • 影子栈指针是什么?
  • CSS标题下划线动态进入和移开
  • 可视化预警系统:如何为企业生产保驾护航?
  • 从0开始一篇文章学习Nginx
  • riscv操作系统记录(一)
  • __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ is not explicitly defined.
  • 【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
  • 【从零学习JVM|第三篇】类的生命周期(高频面试题)
  • 【JVM】- 内存结构
  • 八股文——JVM
  • 电子电气架构 --- E/E架构战略
  • 【RAG排序】rag排序代码示例-简单版
  • 医疗风险预测AI模型:机器学习与深度学习方法的深度分析与实践
  • 具有价值的做pc端网站/杭州网站
  • wordpress新站注意事项/lpl赛区战绩
  • 团购网站单页模板/卢松松外链工具
  • 个人可以架设网站吗/百度推广一般多少钱
  • 网站开发文档模板下载/免费建网站知乎
  • 网站建设net接口/线上电商怎么做