shell中分割字符串之后怎么取得最后一个东西的值?如果可以的话,怎么将分割后的结果保存到一个数组中?

比方说,我有一个路径path="/home/work/hdfs/diff",我想用反斜杠"/"分割字符串,取得最后一个目录的名字diff,我应该怎么做?首先,我是不知道这... 比方说,我有一个路径path="/home/work/hdfs/diff",我想用反斜杠"/"分割字符串,取得最后一个目录的名字diff,我应该怎么做?首先,我是不知道这个目录里面有几个"/"的,也就是说,我不知道分割完之后“diff”是在第几列上。否则的话一个awk命令直接搞定了。
不知道我说明白了没,请shell达人帮忙解答一下哈~
展开
 我来答
百度网友faadf46
高粉答主

2020-05-14 · 说的都是干货,快来关注
知道答主
回答量:4556
采纳率:0%
帮助的人:69.4万
展开全部

1、首先在shell中,定义一个字符串变量,例:str='bbc123uu789'。

2、使用echo输出变量$str的值,例:#注释:shell中定义变量不需要使用$符号,使用变量的时候需要使用$符号echo $str。

3、使用sed指令,对变量进行处理,例:echo $str|sed 's/./&\+/g'#注释:sed是文本流的处理指令,不会对原文件的内容造成破坏,同时sed支持正则表达式,所以使用起来特别强大#经过以上简单处理之后,字符之间被+符号分隔开来了。

4、sed指令本身并不会原文本造成破坏,所以,再次输出变量$str,值并未改变。

5、使用空格对字符进行分隔,只需要指定sed语法种的符号即可,例:echo $str|sed 's/./& /g'#注释:掌握了这个,想使用什么符号分隔都可以,在&符号后指定就可以了。

6、扩展一下,按照三个字符一组,对字符串进行分隔,例:echo $str|sed 's/.../& /g'。

miniapp30ckv39LZ7vSp
2011-07-26 · TA获得超过743个赞
知道小有建树答主
回答量:349
采纳率:0%
帮助的人:474万
展开全部
这个问题很简单呀,直接使用命令basename获取即可。例如path="/home/work/hdfs/diff"获取diff的命令为:
basename $path
如果想获取/home/work/hdfs这部分内容,可使用命令:
basedir $path
追问
我只是举了这么一个例子,并不是说我要解决的问题就是路径的问题。比如这样的问题应该怎么处理:a=“1:2:3:4:5:6:7”,我想得到最后一列的“7”,怎么做?我事先并不知道这里有几列。
如果在perl中,可以使用@t=split /:/,$a这样来做,shell中有类似的做法么?
谢谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kwydwuf
推荐于2017-09-12 · TA获得超过7409个赞
知道大有可为答主
回答量:1527
采纳率:71%
帮助的人:1989万
展开全部
有很多命令都可以实现你要求的功能,比如

awk:

echo "1:3:5" | awk -F ":" '{print $NF}'

sed:

echo "1:3:5" | sed 's/.*:\([^:]*\)$/\1/'
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liebedich1992
2018-12-19
知道答主
回答量:6
采纳率:0%
帮助的人:5384
展开全部
string="1:2:3:4:5:6:7"
array=(${string//:/ }) #创建数组
last_value=${array[${#array[*]}-1]} #获取最后一个元素
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式