./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/ 发布于 2017-03-06 08:01:27
为什么不使用basename呢?例如:
for file in *mp3; do basename "$file"; done发布于 2017-03-06 05:38:50
您的主要问题是尝试使用/作为分隔符,而/也是要解析的字符。
您需要使用不同的分隔符,例如管道。匹配所有内容和一个/,然后使用\(和\) (捕获组)分隔要提取的部分,并使用\1来呈现该组:
echo "yourstring" | sed 's|.*/\([^/]*\)$|\1|'您可以让它在没有捕获组的情况下工作:只需删除所有内容直到最后一个/:
echo "yourstring" | sed 's|.*/||'https://unix.stackexchange.com/questions/349401
复制相似问题