请关注本头条号,每天坚持更新原创干货技能文章。
如需学习视频,请在微信搜索"大众年夜众号“智传网优”直接开始自助视频学习
本教程将从编程的角度向您先容如何在Linux命令行中将制表符(Tab)转换为空格。

关于在编程中利用Tab和空格的辩论从未停滞过。
虽然您可能喜好一贯利用Tab,但您的编码指南可能建议利用空格。
但是,如果您已经在程序的各个地方利用了制表符,并且须要将这些制表符转换为空格,以便审阅职员许可您的代码,那么请往下看。
在本教程中,我将向您展示如何在Linux命令行中将Tab符号转换为空格符号。
在Linux命令行中将制表符(tab)转换为空格
2. 在Linux命令行中将制表符(Tab)转换为空格
我利用这个示例文本文件,这是一个大略的c++程序,用于检讨奇数和偶数。这是文件的内容:
#include<iostream>usingnamespacestd;intmain(){intn;cout<<"Enteranumber:";cin>>n;if(n%2==0){cout<<n<<"isanevenNumber";}elsecout<<n<<"isanoddNumber";return0;}
在Linux命令行中将制表符(Tab)转换为空格
检讨文本文件是否有tab符有几种方法可以做到这一点。我创造最大略的方法是利用cat命令。您可以利用带有-T选项的cat命令,并将所有选项卡显示为^I(标准输出) 。
cat-Ttab_file
您可以看到文件中制表符(tab)的位置。
#includeusingnamespacestd;intmain(){^Iintn;^Icout<<“Enteranumber:^I“;^Icin>>n;^I^Iif(n%2==0){^I^Icout<<n<<“isanevenNumber”;^I}^Ielse^I^Icout<<n<<“isanoddNumber”;^Ireturn0;}
3. 利用`expand`命令将制表符(tab)转换为空格
如果您对一个文件利用expand命令,它会将所有tab转换成一个包含8个空格的块,并在屏幕上显示输出。
expandtab_file
但那不是很方便,你险些看不到这里的变革。更好的方法是将输出结果保存到另一个文件中。
expandtab_file>space_file
现在,如果利用cat命令查看文件,就不会再找到制表符tab。
4. 减少空格符的数量正如我在前一节中提到的,默认情形下,一个制表符即是8个空格。如果你的代码有这么大的缩进,那就太奇怪了。
好在您可以利用-t选项变动默认空间大小。
expand-tNtab_file
例如,如果你必须把每个tab符变成2个空格,你可以像这样利用expand命令:
expand-t2tab_file>space_file
5. 只将最前面的制表符转换为空格
常日在程序中,您只须要转换最前面的制表符,即行首的制表符。
expand也供应了这个选项。如果您只想将最前面的制表符转换为空格,请利用-i选项。
如果我们连续前面的例子,请实行以下命令:
expand-t2-itab_file>space_file
只将最前面的制表符转换为空格
6. 将制表符转换为空格并将其保存到源文件中
在上面的所有示例中,您已经将转换后的文件保存到一个新文件中。但是,如果您的目标是通过将制表符转换为现有代码文件的空格来清理代码,那么您可能希望将输出保存在源文件本身中。
为此,可以利用sponge命令。在将标准输入写入输出之前,用sponge(海绵)“接管”全体输入。当您试图变动和保存相同的文件时,这是非常有用的。
现在,sponge命令可能在您的系统上不可用。您必须安装moreutils包。
在基于Ubuntu/Debian的发行版上,你可以利用以下命令来安装moreutils包:
sudoaptinstallmoreutils
安装后,便可利用它了:
expand-t2-itab_file|spongetab_file
7. 将一个目录中所有匹配的文件中的制表符转换为空格
到目前为止,您所学的都适用于单个文件。但是如果你有一个项目,它有几个程序文件,你想把所有的制表符tab都转换成空格,你就须要更好的技能。
到目前为止,我们所学到的知识可以与强大的find和exec命令相结合。
find.-name'.cpp'-typef-execbash-c'expand-t4"$0"|sponge"$0"'{}\;
上面的命令查找所有以扩展名cpp结尾的文件,将这些文件通报给expand命令,而expand命令在sponge命令的帮助下将输出写入源文件。
您可能认为此时利用sed命令会更随意马虎一些,但这完备取决于您的爱好和选择。
8. 总结通过本文,你该当学习到如何通过命令行工具把制表符tab转换为空格了吧?还可以结合find等命令实现批量自动转换。
本文已同步至博客站,尊重原创,转载时请在正文中附带以下链接:https://www.linuxrumen.com/cyml/1683.html