zsh 替换,无法使用重复进行正则表达式

zsh 替换,无法使用重复进行正则表达式

我正在尝试执行 ZSH 变量替换,但我不得不通过管道以蹩脚的方式进行操作cut。是否可以完全在 ZSH 中执行此操作?

i=./riak.logs.cloudstoragea08/2014-08-07T15:47:49.540310/console.log.2014-07-31-05 echo ${${i/\.\//}:s/\/*//} riak.logs.cloudstoragea08/2014-08-07T15:47:49.540310/console.log.2014-07-31-05 echo ${${i/\.\//}} riak.logs.cloudstoragea08/2014-08-07T15:47:49.540310/console.log.2014-07-31-05 echo ${echo ${i/\.\//} | cut -d/ -f 1} zsh: bad substitution: echo $(echo ${i/\.\//} | cut -d/ -f 1) riak.logs.cloudstoragea08

答案1

i=./riak.logs.cloudstoragea08/2014-08-07T15:47:49.540310/console.log.2014-07-31-05
j=${i:2}
echo ${j%%/*}

或者:

expr $i : '\.\/\([^/]*\)/'

相关内容