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 都无果,急求高手解决…… 展开
我要写一个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 都无果,急求高手解决…… 展开
展开全部
这个不需要正则式效率差,难理解。使用两次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,最后扩展为原变量值去掉匹配的内容后的内容。
#!/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,最后扩展为原变量值去掉匹配的内容后的内容。
展开全部
用sed正则:
echo /home/lxy/hhhhh-a.bbb.cc.d | sed 's/[^-]*-\(a\.[^\.]*\.[^\.]*\)\.d/\1/'
echo /home/lxy/hhhhh-a.bbb.cc.d | sed 's/[^-]*-\(a\.[^\.]*\.[^\.]*\)\.d/\1/'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
echo /home/lxy/hhhhh-a.bbb.cc.d | awk -F"/" '{print substr($4,7,length($4)-8)}'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询