首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带sed的正则表达式

带sed的正则表达式
EN

Unix & Linux用户
提问于 2017-03-06 05:30:02
回答 2查看 1.5K关注 0票数 6
代码语言:javascript
复制
./Queen/(1986)/Innuendo/01.One vision.mp3
./Queen/(1986)/Innuendo/02.One vision.mp3
./Queen/(1986)/Innuendo/03.One vision.mp3

我想在上线上显示如下:

代码语言:javascript
复制
01.One vision.mp3
02.One vision.mp3
03.One vision.mp3

我试过:

代码语言:javascript
复制
  sed -i 's/^[^.$/]/ /g/ 
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2017-03-06 08:01:27

为什么不使用basename呢?例如:

代码语言:javascript
复制
for file in *mp3; do basename "$file"; done
票数 6
EN

Unix & Linux用户

发布于 2017-03-06 05:38:50

您的主要问题是尝试使用/作为分隔符,而/也是要解析的字符。

您需要使用不同的分隔符,例如管道。匹配所有内容和一个/,然后使用\(\) (捕获组)分隔要提取的部分,并使用\1来呈现该组:

代码语言:javascript
复制
echo "yourstring" | sed 's|.*/\([^/]*\)$|\1|'

您可以让它在没有捕获组的情况下工作:只需删除所有内容直到最后一个/

代码语言:javascript
复制
echo "yourstring" | sed 's|.*/||'
票数 11
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/349401

复制
相关文章

相似问题

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