Linux怎么使用unexpand将空格转制表符

夜杰大大_3885

夜杰大大_3885

2026-07-02

501人浏览

原创

unexpand 默认仅转换行首连续空格,需加 -a 参数才处理全文;制表位宽度由 -t 指定,默认8列,且仅长度≥2的空格序列才替换为制表符。

linux怎么使用unexpand将空格转制表符

unexpand 命令默认只转行首空格,不是全文替换

很多人试了 unexpand file.txt 发现中间的空格没变,以为命令失效——其实这是设计行为。unexpand 默认只处理每行开头的连续空格(leading blanks),类似缩进对齐场景。它不碰行中、行尾或被字母数字夹着的空格。

如果你要转的是代码缩进、配置文件对齐这类行首空格,那默认行为正好;但如果是想把所有空格序列(比如多个空格分隔字段)换成制表符,就得加参数。

  • 用 -a 或 --all 开启全文转换:只对「连续空格序列」生效,且长度必须 ≥ 2 才会替换成一个 \t
  • 不加 -a 时,即使有 -t 4 也只作用于行首
  • unexpand 不会把单个空格变成制表符,哪怕在行首——它只合并空格序列

怎么控制制表位宽度?用 -t 参数指定列数

unexpand 的制表位不是固定 8 列,而是可配的。默认是 8,但很多项目用 2/4/6,比如 Python 缩进常用 4 列,Go 是 8,Kubernetes YAML 常要求 2。

Zynq Linux Hardware Debug
Zynq Linux Hardware Debug

Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。

下载

设置方式很简单:-t 4 表示每 4 列一个制表位,-t 2,6,10 可设多个显式位置(较少用)。注意:这个值影响「多少空格能凑成一个 \t」,不是简单除法。

  • 输入 7 个空格 + -t 4 → 输出 \t(占前 4 列)+ 3 个空格(剩下 3 列不够再打一个 \t)
  • 输入 8 个空格 + -t 4 → 输出两个 \t
  • 输入 5 个空格 + -t 8 → 还是 5 个空格(不够 8,不转)

常见错误:和 expand 混用导致空格/制表符反复震荡

有人先用 expand -t 4 把制表符转空格,再用 unexpand -t 4 -a 转回去,结果发现行末多出空格、对齐错乱——这是因为 expand 把每个 \t 都补到下一个制表位,而 unexpand 只按空格序列长度反推,两者不是严格可逆操作。

  • 尤其当原始文本已有混排(比如部分行用空格缩进、部分用 \t),来回转换会放大差异
  • unexpand -a 对「单词间多个空格」也会转,可能破坏字段对齐(如 ls -l 输出)
  • 真实场景建议:只在明确需要统一缩进风格时用,别用于格式化日志、表格类文本

管道中使用 unexpand 要注意输入是否带换行符

直接 echo " hello" | unexpand -t 4 有效,但 printf " hello" | unexpand -t 4 可能没输出——因为 unexpand 按行处理,遇到没换行符的输入会缓存,直到 EOF 或换行才输出。

  • 确保管道末尾有换行:printf " hello\n" | unexpand -t 4
  • 重定向文件更稳:unexpand -t 4 file.txt > out.txt
  • 想实时看效果,加 - 强制读标准输入:unexpand -t 4 -,然后 Ctrl+D 结束
真正容易被忽略的是:制表位定义和编辑器显示宽度未必一致。你用 -t 4 生成的 \t,在 Vim 里设 set tabstop=4 才对齐;如果终端或编辑器显示为 8 列,看起来还是错位。别只盯着命令参数,得同步检查消费端的渲染逻辑。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4030

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3453

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2613

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6390

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6022

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3513

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3005

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3239

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习