首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一句话shell系列之 Tab 键替换为空格

【一句话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

如果你知道其他方式,欢迎留言哦……

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171224G0M88F00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券