今天写一脚本时要去除字符串前面的空格,随便到网上找了个SED,如下:

sed 's/^[[:space:]]\+//'

然后我就用到了我的字符串中:

re=$x|sed 's/^[[:space:]]\+//'

echo $re

这时就奇怪了,就想不通为什么老是输出空格。

搞了半天没搞定,直接找master。

最后他直接说明显的有二个错误,

第一,管道符是把前面的输出当做后面的输入,而我前面木有输出,显然就不能把值传给SED,

第二,SED是直接打印在屏幕上的,是没有内容的,所以要加个执行符。

 

所以要想让$re打印出来,要改成如下:

re=`echo $x | sed 's/^[[:space:]]\+//'`

这时就可以看到输出了。

倒。。。。。。。。。

 

最后因为这样去除空格又要调用一个SED子进程,所以会造成资源浪费,所以最好直接在shell中做处理,自己到chinaunix上去问了问人,答案如下:

 

 
  
  1. [joe@joe-laptop ~]$ a='Description:    CentOS release 5.5 (Final)' 
  2. [joe@joe-laptop ~]$ echo ${a#* } 
  3. CentOS release 5.5 (Final) 

另外一种:


 
  
  1. echo "Description:    CentOS release 5.5 (Final)"|awk -F: '{sub(/^  */,"",$2);print $2}'