あなたの主な問題は、 /
を使用しようとしていることです /
の場合、セパレータとして も解析する文字です。
パイプなど、別のセパレータを使用する必要があります。すべてと /
に一致 、次に \(
を使用します と \)
(グループをキャプチャ) 抽出したい部分を区切って \1
を使用 、そのグループをレンダリングします:
echo "yourstring" | sed 's|.*/\([^/]*\)$|\1|'
キャプチャ グループがなくても機能する場合があります。最後の /
まですべてをドロップするだけです。 :
echo "yourstring" | sed 's|.*/||'
basename
を使用しない理由 このため?例:
for file in *mp3; do basename "$file"; done