Como esquerda e direita tira ao mesmo tempo?

4

Eu uso ${parameter#word} e ${parameter%word} para remover o prefixo e o postfix da string.

$ x=2012-hello.jpg
$ y=${x#*-}
$ z=${y%.*}
$ echo $z
hello

Como posso fazê-las de uma só vez, em vez de duas.

    
por kev 07.01.2012 / 15:58

2 respostas

5

Não é possível com a expansão de parâmetros, mas é possível com correspondência de expressões regulares:

x=2012-hello.jpg
[[ $x =~ .*-(.*)\.jpg ]] && echo ${BASH_REMATCH[1]}
    
por 07.01.2012 / 18:48
1

Se você está certo em usar sed em vez de expansão de parâmetro:

x=2012-hello.jpg
$ z="$(sed -e 's/.*-\(.*\)\..*//' <<<"$x")"
$ echo "$z"
hello
    
por 10.01.2012 / 12:52

Tags