sed 正则表达式

Mau*_*nha 6 linux sed

./Queen/(1986)/Innuendo/01.One vision.mp3
./Queen/(1986)/Innuendo/02.One vision.mp3
./Queen/(1986)/Innuendo/03.One vision.mp3
Run Code Online (Sandbox Code Playgroud)

我想将上面的行显示为:

01.One vision.mp3
02.One vision.mp3
03.One vision.mp3
Run Code Online (Sandbox Code Playgroud)

我试过:

  sed -i 's/^[^.$/]/ /g/ 
Run Code Online (Sandbox Code Playgroud)

SYN*_*SYN 11

您的主要问题是您试图/用作分隔符,何时/也是您将要解析的字符。

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

echo "yourstring" | sed 's|.*/\([^/]*\)$|\1|'
Run Code Online (Sandbox Code Playgroud)

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

echo "yourstring" | sed 's|.*/||'
Run Code Online (Sandbox Code Playgroud)


sch*_*iba 6

为什么不basename用于这个?例如:

for file in *mp3; do basename "$file"; done
Run Code Online (Sandbox Code Playgroud)

  • 看来 OP 想要就地修改文件(请参阅示例中的 `-i` 标志)。 (2认同)