首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从路径中删除一个目录组件(字符串操作)

从路径中删除一个目录组件(字符串操作)
EN

Stack Overflow用户
提问于 2012-04-25 22:05:53
回答 4查看 3.7K关注 0票数 2

我正在寻找从路径中删除字段的最简单和最具可读性的方法。例如,我在这里有/this/is/my/ example /path/,我想使用bash命令从字符串中删除第五个字段("/complicated"),这样它就变成了/this/is/my/path。我可以做到这一点

代码语言:javascript
复制
echo "/this/is/my/complicated/path/here" | cut -d/ -f-4
echo "/"
echo "/this/is/my/complicated/path/here" | cut -d/ -f6-

但我希望只用一个简单的命令就能完成这件事,比如

代码语言:javascript
复制
echo "/this/is/my/complicated/path" | tee >(cut -d/ -f-4) >(cut -d/ -f6-)

除了这个不起作用。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-25 22:21:08

使用cut,您可以指定要打印的字段的逗号分隔列表:

代码语言:javascript
复制
$ echo "/this/is/my/complicated/path/here" | cut -d/ -f-4,6-
/this/is/my/path/here

因此,实际上没有必要使用两个命令。

票数 4
EN

Stack Overflow用户

发布于 2012-04-25 22:10:25

使用sed怎么样?

代码语言:javascript
复制
$ echo "/this/is/my/complicated/path/here" | sed -e "s%complicated/%%"
/this/is/my/path/here
票数 0
EN

Stack Overflow用户

发布于 2012-04-25 22:30:24

这将删除第5个path元素

代码语言:javascript
复制
echo "/this/is/my/complicated/path/here" | 
  perl -F/ -lane 'splice @F,4,1; print join("/", @F)'

就是bash

代码语言:javascript
复制
IFS=/ read -a dirs <<< "/this/is/my/complicated/path/here"
newpath=$(IFS=/; echo "${dirs[*]:0:4} ${dirs[*]:5}")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10317384

复制
相关文章

相似问题

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