sed 的正则表达式

sed 的正则表达式
./Queen/(1986)/Innuendo/01.One vision.mp3
./Queen/(1986)/Innuendo/02.One vision.mp3
./Queen/(1986)/Innuendo/03.One vision.mp3

我想将上面的行显示为:

01.One vision.mp3
02.One vision.mp3
03.One vision.mp3

我尝试过:

  sed -i 's/^[^.$/]/ /g/ 

答案1

您的主要问题是您尝试将其用作/分隔符,而/同时也是您将要解析的字符。

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

echo "yourstring" | sed 's|.*/\([^/]*\)$|\1|'

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

echo "yourstring" | sed 's|.*/||'

答案2

为什么不用basename于此目的?例如:

for file in *mp3; do basename "$file"; done

相关内容