最新GNU tac 的分隔符归属:反转 A:B:C,为什么结果不是 C:B:A 想把冒号分隔的三项倒过来,很多人会预期得到C:B:A。但tac按记录工作,分隔符会归属于相邻的一条记录,而不是先移走、反转项目、再平均插回。若原文末尾没有分隔符,反转后的边界就可能看起来黏在一起。理解记录究竟包含哪些... yunqueblog/ 技术教程/ 2026-10-04/ 1 阅读
最新GNU timeout 的状态归属:同样被终止,为什么一次返回124另一次返回143 给命令套上timeout后,外层脚本需要决定是重试、报警还是继续。但一个非零退出码可能来自业务程序本身,也可能来自超时包装器。启用preserve-status后,同样触发时间限制,得到的数字又会变化。先辨明返回状态... yunqueblog/ 技术教程/ 2026-10-04/ 1 阅读
最新GNU expand 的制表停靠位:设置四列,为什么一个 TAB 有时只变成一个空格 把TAB替换为四个空格,看起来像一种简单的格式统一方案,但这与每四列设置一个制表停靠位并不相同。真正的制表符表达的是跳到下一个位置,需要几个空格取决于前面已经占了几列。若忽略当前列,表格对齐和代码缩进都可能在转换以后... yunqueblog/ 技术教程/ 2026-10-04/ 1 阅读
最新GNU head 与 tail 的带符号行数:同样写二,为什么得到四种范围 从导出文件删除表头和尾部汇总,乍看只需要一个数字。但head与tail对行数前面的符号有各自语义:前几行、末几行、排除末几行以及从某行开始,是四个不同的范围。把数字都写成二,有助于看出差异来自选项规则,而不是样本长度... yunqueblog/ 技术教程/ 2026-10-04/ 1 阅读
最新GNU numfmt 单位转换:同一个 1K,为什么可能是1000也可能是1024 监控报表里都写1K,一处还原成一千,另一处却是一千零二十四,数据并不一定有错,只是单位规则没写清楚。更隐蔽的是,把精确字节数格式化成短标签再转回来,可能得到另一个整数。numfmt能够处理常见缩放与显示,但它不会替你... yunqueblog/ 技术教程/ 2026-10-04/ 3 阅读
GNU xargs 空输入:什么也没读到,为什么命令仍运行了一次 批处理脚本筛出零个任务后,下游命令却仍运行了一次,是一种特别隐蔽的空批次问题。某些程序在没有位置参数时会读取标准输入、采用默认目录,甚至执行与有参数时不同的动作。GNU xargs默认允许一次没有新增参数的调用,因此... yunqueblog/ 技术教程/ 2026-10-03/ 4 阅读
GNU tr 删除后再压缩:-d 与 -s 同时启用时,两组字符各管什么 清理设备输出时,常见需求是删掉某种分隔符,再把重复字符压成一个。tr -ds看上去只是两个简单开关,但处理顺序会改变最终结果:删除动作可能让原本分开的字符成为相邻一段,而挤压随后会把这段一起缩短。若把同样两个步骤反过... yunqueblog/ 技术教程/ 2026-10-03/ 4 阅读
GNU wc 的四种计数:最后一行没有换行,行数为什么少一 上传一份两行文本,编辑器看见两条记录,wc -l却只报一;再换成wc -m,数字又和文件大小不同。这几种结果可以同时正确,因为它们回答的是不同问题。只有先规定记录怎样结束、文本怎样编码、宽度怎样计算,计数才能成为验收... yunqueblog/ 技术教程/ 2026-10-03/ 4 阅读
GNU uniq 相邻去重:相同记录为什么还会留下两份 一份事件日志里,同一个状态可能连续重复,也可能隔了几个事件再次出现。把整份文件交给uniq以后,明明相同的状态仍然出现两次,这通常不是命令漏查,而是需求与处理单位没有对齐。uniq围绕连续相同的记录段工作,它不保存所... yunqueblog/ 技术教程/ 2026-10-03/ 5 阅读