日期:2014-05-16  浏览次数:20739 次

shell字符处理
比如有路径 /home/hello/ ,我想处理成 /home/hello ,sed中有什么方法呢,shell中有没有类似endwith("/")之类的函数或者数组下标移动的函数可用呢?

------解决方案--------------------
echo "/home/hello/" | sed -e 's:/$::'
------解决方案--------------------
shell可以结合awk进行substr,按照lz的要求,只是需要删除最后一个字符“/”
如:
#dir=/home/hello/
#subdir=`echo $dir | awk '{print substr($1,1,length($1)-1)}'`
#echo ${subdir}
/home/hello

如果要做的扩展性好点,就在前天加上判断,如:

dir=/home/hello/ #这里的dir可以使用外面传入的参数值
flag=`echo $dir | awk '{print substr($1,length($1),1)}'`
if [ "$flag" = "/" ]
then
subdir=`echo $dir | awk '{print substr($1,1,length($1)-1)}'`
else
subdir=$dir
fi

echo $subdir

执行结果:
#dir=/home/hello
#flag=`echo $dir | awk '{print substr($1,length($1),1)}'`
#if [ "$flag" = "/" ]
> then
> subdir=`echo $dir | awk '{print substr($1,1,length($1)-1)}'`
> else
> subdir=$dir
> fi
#echo $subdir
/home/hello

----------
#dir=/home/hello
#flag=`echo $dir | awk '{print substr($1,length($1),1)}'`
#if [ "$flag" = "/" ]
> then
> subdir=`echo $dir | awk '{print substr($1,1,length($1)-1)}'`
> else
> subdir=$dir
> fi
#echo $subdir
/home/hello