当前位置: 技术问答>linux和unix
shell字符处理
来源: 互联网 发布时间:2017-03-18
本文导语: 比如有路径 /home/hello/ ,我想处理成 /home/hello ,sed中有什么方法呢,shell中有没有类似endwith("/")之类的函数或者数组下标移动的函数可用呢? | shell可以结合awk进行substr,按照lz的要求,只是需...
比如有路径 /home/hello/ ,我想处理成 /home/hello ,sed中有什么方法呢,shell中有没有类似endwith("/")之类的函数或者数组下标移动的函数可用呢?
|
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
如:
#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
|
echo "/home/hello/" | sed -e 's:/$::'