若是一个文件内容中含有若干tab和空格,我们该如何将这些格式统一呢?

例如:

 

test2文件,就有tab和空格,而且还有多个tab和空格连到一起。这样的话,就需要将格式统一

首先我们使用命令:sed 's/\t\t*/\t/g' test2>test3          //将若干的tab都替换为一个tab

 

 

其次,我们我们使用命令:sed ‘s/  */\t/g’ test3 >test4                 //将若干个空格都替换为一个tab,注意*前有2个空格

 

 

若是有tab和空格相连的情况,可以再使用一次sed 's/\t\t*/\t/g' 或者将上面的2个命令顺序颠倒下,以保证所有的tab和空格都替换为统一的一个tab了。

这里还需要注意正则表达式中的一个字符*

因为:一个* 表示“重复0个或多个前面的RE字符”即可以用来代表任意(0个或多个)字符,

因此 a* 表示“拥有空字符或一个a以上的字符”。特别注意,因为允许空字符(就是不管是否有字符都可以的意思),因此,grep ‘a*' filename 将会把filename的所有内容都哦显示在屏幕上。

如果是aa* 表示:第一个a肯定要存在,第二个a则可有可无的,所以凡是含有a、aa、aaa、aaaa、aaaaa甚至更多的a的都是负责aa*的要求的。

本文中我们在统一tab和空格的时候就是使用的这个正则表达式。