Linux shell 中如何从路径名提取指定字符串

Linuxshell中如何从路径名提取指定字符串我要写一个shell脚本,首先需要从文件名目录名中提取一串字符,但是遇到难题。$PWD路径名为/home/lxy/hhhh... Linux shell 中如何从路径名提取指定字符串

我要写一个shell 脚本 ,首先需要从文件名目录名中提取一串字符,但是遇到难题。
$PWD
路径名为 /home/ lxy/ hhhhh-a.bbb.cc.d (格式类型固定)
其中 现在我只想要 a.bbb.cc 这一段。
其中 hhhhh- 格式固定
a.bbb.cc.d 这一段长度有浮动,但前面的 a. 和后面的 .d 是固定的

我需要的是 a.bbb.cc 这一段 ,试过很多办法,cut awf sed grep 都无果,急求高手解决……
展开
 我来答
不知详解
2012-09-06 · 知道合伙人软件行家
不知详解
知道合伙人软件行家
采纳数:609 获赞数:2252
自学计算机。

向TA提问 私信TA
展开全部
这个不需要正则式效率差,难理解。使用两次shell 扩展就可以了。
#!/bin/bash
a="$1"
a="${a##*-}"
#从开头删除到顺数最后一个减号。
a="${a%\.*}"
#从结尾删除到倒数第一个小数点。
echo "$a"

脚本保存为 a.sh
执行命令 ./a.sh “/home/ lxy/hhhhh-a.bbb.cc.d”
请把参数用引号括住。
得到 a.bbb.cc
说明:
${parameter#pattern}和${parameter##pattern} 掐头,#是最小匹配,##是最大匹配,将变量从开头匹配pattern,最后扩展为原变量值去掉匹配的内容后的内容。
${parameter%pattern}和${parameter%%pattern} 去尾,%是最小匹配,%%是最大匹配,将变量从结尾匹配pattern,最后扩展为原变量值去掉匹配的内容后的内容。
百度网友5311d79
2012-09-06 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3119万
展开全部
用sed正则:
echo /home/lxy/hhhhh-a.bbb.cc.d | sed 's/[^-]*-\(a\.[^\.]*\.[^\.]*\)\.d/\1/'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
whoami2099
2012-09-06 · TA获得超过175个赞
知道小有建树答主
回答量:463
采纳率:100%
帮助的人:168万
展开全部
echo /home/lxy/hhhhh-a.bbb.cc.d | awk -F"/" '{print substr($4,7,length($4)-8)}'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式