在最后一个分隔符之前提取所有文本的 Sed 语法?

swa*_*r35 1 regex linux bash sed

我正在尝试使语法正确,以便我可以scanning-client-container-0.2.tar看起来像scanning-client-container

我正在使用分隔符“ - ”,如下所示:

sed -e 's/-[^*]*$//'

结果scanning,过早地被切断了

anu*_*ava 7

您可以在正则表达式中使用否定字符类:

sed 's/-[^-]*$//' <<< 'scanning-client-container-0.2.tar'
Run Code Online (Sandbox Code Playgroud)

scanning-client-container
Run Code Online (Sandbox Code Playgroud)

正则表达式详情:

  • -: 匹配一个 -
  • [^-]*: 匹配 0 个或多个不匹配的字符 -
  • $: 比赛结束