shell字符处理

电灯泡 2012-10-17 10:51:15
比如有路径 /home/hello/ ,我想处理成 /home/hello ,sed中有什么方法呢,shell中有没有类似endwith("/")之类的函数或者数组下标移动的函数可用呢?
...全文
105 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
电灯泡 2012-10-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 3 楼 的回复:

引用 1 楼 的回复:

echo "/home/hello/" | sed -e 's:/$::'

那有没有移动下标来作处理string的惯用方式呢

/$ 是什么意思呢
[/Quote]
了解,$表示一行的结尾,/$表示最后一个/
电灯泡 2012-10-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用 1 楼 的回复:

echo "/home/hello/" | sed -e 's:/$::'

那有没有移动下标来作处理string的惯用方式呢
[/Quote]
/$ 是什么意思呢
电灯泡 2012-10-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

echo "/home/hello/" | sed -e 's:/$::'
[/Quote]
那有没有移动下标来作处理string的惯用方式呢
fyz_Winnie 2012-10-17
  • 打赏
  • 举报
回复
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
mymtom 2012-10-17
  • 打赏
  • 举报
回复
echo "/home/hello/" | sed -e 's:/$::'

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧