【一句话shell系列】之 Tab 键替换为空格
1 问题场景
为了统一化自己的代码风格,有些人喜欢把自己的代码行首使用 Tab 键,当然,有些人则喜欢使用空格。
我无意讨论空格和 Tab 键孰好孰坏,因为那样势必会带来口水战。我只说一下我自己的看法,我自己喜欢在代码的行首 Tab 替换成4个空格。所以,当我拿到代码的时候,为了让代码的格式看着更统一——因为后续我都是使用空格——我有时会把所有的 Tab 键都替换会空格【请原谅我的任性,呲牙】
当然,更多的时候,我是出于文本的考虑,避免因 Tab 键带来后续数据处理不一致的情况,所以我需要把 Tab 键替换为空格。
2 问题解决
为了便于说明问题,我们暂定使用文件 tab.txt,文件的内容如下:
为了便于显示 tab 键,我使用 cat 命令的 -A 选项,如果你希望更一步了解该选项的含义,你可以查看上一篇文章:【一句话shell系列】之回车换行符的删除
2.1 sed 命令的替换方式
sed 命令是常用的字符命令替换方式,我们只需要注意,sed 替换的时候,tab 键使用 “\t” 表示就可以了。替换命令如下:
当然,如果你希望直接修改文件内容,可以使用 -i 选项,如下:
sed 命令相关的man手册内容如下:
上面实验了直接在文件上修改,下面实验一下修改备份的功能。
通过以上的例子,可以确定 -i 选项的备份功能。只不过需要注意的是,-i 选项和后面添加的后缀,中间不能用空格。
2.2 tr 命令的替换方式
使用 tr 命令替换和使用 sed 命令的替换的方式很是相似,下面是操作命令:
下面是 tr 命令的 man 手册
2.3 col 命令的替换方式
col 是一个文本过滤器,参数 -x 可以满足我们的需求。不过需要注意的是,col 是替换 tab 键到一个或者多个空格,通过下面的例子可以比较明显的看出这一点:
通过对比多行,可以看到 col 是按照 8 个字节为一组,tab 键根据实际情况的不同,替换成不同多个字符串,保证数据格式化后格式的统一。
如上所示,“ceshi 3” 中的第二个 tab 键表示 2 个空格(因为前面有 “shishi” 6 个字符)
“ceshi 4” 中的第二个 tab 键表示 1 个空格(因为前面有 “shishi@” 7 个字符)
可以看出来, col 的确作为字符的格式化工具,显示的效果还是挺不错的。
3 总结
目前我我知道的tab 键替换空格的三种方式:
sed ‘s/\t/ /g’ filename
cat filenametr “\t” “ “
cat filenamecol -x
如果你知道其他方式,欢迎留言哦……
领取专属 10元无门槛券
私享最新 技术干货