今天写一脚本时要去除字符串前面的空格,随便到网上找了个SED,如下:
sed 's/^[[:space:]]\+//'
然后我就用到了我的字符串中:
re=$x|sed 's/^[[:space:]]\+//'
echo $re
这时就奇怪了,就想不通为什么老是输出空格。
搞了半天没搞定,直接找master。
最后他直接说明显的有二个错误,
第一,管道符是把前面的输出当做后面的输入,而我前面木有输出,显然就不能把值传给SED,
第二,SED是直接打印在屏幕上的,是没有内容的,所以要加个执行符。
所以要想让$re打印出来,要改成如下:
re=`echo $x | sed 's/^[[:space:]]\+//'`
这时就可以看到输出了。
倒。。。。。。。。。
最后因为这样去除空格又要调用一个SED子进程,所以会造成资源浪费,所以最好直接在shell中做处理,自己到chinaunix上去问了问人,答案如下:
- [joe@joe-laptop ~]$ a='Description: CentOS release 5.5 (Final)'
- [joe@joe-laptop ~]$ echo ${a#* }
- CentOS release 5.5 (Final)
另外一种:
- echo "Description: CentOS release 5.5 (Final)"|awk -F: '{sub(/^ */,"",$2);print $2}'