首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从realpath中移除单词

从realpath中移除单词
EN

Stack Overflow用户
提问于 2018-03-31 06:56:58
回答 3查看 56关注 0票数 3

假设我有这个目录

代码语言:javascript
复制
/home/project/program.c

我想把它改成

代码语言:javascript
复制
project/program.c

我已经将实际路径设置为变量,并尝试删除"/home/“,但它仍然存在。

代码语言:javascript
复制
fpath="$(realpath $file)" 
ffpath=${fpath//$/home//}
echo "$ffpath"

有人能提供一些提示吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-03-31 07:07:06

较短的解决方案是使用前缀模式删除:

代码语言:javascript
复制
fpath="$(realpath $file)" 
ffpath=${fpath#/home/}
echo "$ffpath"

但是,如果坚持使用模式替换,则必须引用斜杠,因为它们是特殊分隔符:

代码语言:javascript
复制
fpath="$(realpath $file)" 
ffpath=${fpath/\/home\/}
echo "$ffpath"
票数 1
EN

Stack Overflow用户

发布于 2018-03-31 07:09:54

以下解决方案可以帮助您在同样的问题上。理想情况下,bash扩展参数应该足够满足这一需求,但也很少增加解决方案。

代码语言:javascript
复制
var="/home/project/program.c"

解决方案1:使用cut

代码语言:javascript
复制
echo "$var" | cut -d"/" -f3-

解2:使用参数展开的

代码语言:javascript
复制
echo "${var#*/*/}"

解决方案3:使用sed

代码语言:javascript
复制
echo "$var" | sed 's|\(/[^/]*\)/\(.*\)|\2|'
票数 0
EN

Stack Overflow用户

发布于 2018-03-31 08:55:19

您可以使用basenamedirname

代码语言:javascript
复制
x='/home/project/program.c'
ffpath=$( basename "$( dirname $x)" )"/"$( basename $x )
echo "$ffpath"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49585124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档