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

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,最后输出这个总字节数。
http://www.xdnf.cn/news/13308.html

相关文章:

  • Supervisor服务监督部署Python+Django应用
  • Docker环境下FileRise私有云盘在飞牛NAS的部署与穿透实践
  • Day10_C语言基础
  • 【黑客与安全】Linux系列命令之进程相关命令
  • 【论文阅读】:Weighted Graph Cuts without Eigenvectors:A Multilevel Approach
  • 如何使用Qwen-VL 2.5进行图像分割
  • 使用Python构建高效词汇表:N-Gram词频统计实战
  • 力扣 1456. 定长子串中元音的最大数目 的多解
  • 图数据在人工智能中的应用场景
  • 苍穹外卖-day03
  • 国防科技大学计算机基础课程笔记02信息编码
  • 基于梯度的中毒攻击
  • vue3+vite项目中使用.env文件环境变量方法
  • React Native 是什么?为什么学它?
  • 非功能需求
  • Axure设计案例之词云图设计
  • bed文件排序
  • 比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
  • 解决ubuntu20.04无法唤醒的问题的一种方法
  • 【Java基础】​​向上转型(Upcasting)和向下转型(Downcasting)
  • Rust 学习笔记:关于共享状态并发的练习题
  • 多模态大语言模型arxiv论文略读(112)
  • 13.10 LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析
  • 在软件开发中正确使用MySQL日期时间类型的深度解析
  • 什么是知识产权管理系统?知识产权管理系统有哪些功能?
  • 公司内网OA办公系统(本地服务器没有公网IP)如何实现异地外网访问?
  • MySQL数据库基础(三)———数据行操作
  • 本地项目push到git
  • 深度学习在微纳光子学中的应用
  • 6个月Python学习计划 Day 18 - 项目实战 · 学生成绩管理系统(OOP版)