String de extração de shell de script

0
#! /bin/sh
lineversion ="/tmp/g-9.n.gggg1000.fr-worker1.V.2.tar.bz2" 

Minha pergunta: como posso extrair

 g-9.n.gggg1000.fr-worker1.V.2

de

$lineversion 

em outra variável

    
por researcher 14.03.2016 / 17:58

2 respostas

2
newvar='echo $lineversion | sed 's/\.tar\.bz2//' | sed 's/\/tmp\///''

sed é o utilitário "procurar e substituir" do unix. No exemplo acima, estamos s procurando primeiro ".tar.bz2" (e escapando dos pontos com uma barra invertida precedente) e substituindo-o por nada, e então pegando essa saída e procurando por "/ tmp / "e substituindo-o por nada similarmente.

Em geral: sed 's/search_for/replace_with/'

    
por 14.03.2016 / 18:03
2

Você pode usar a sintaxe de subcadeia para extrair caracteres da posição fixa:

echo ${lineversion:position:length}
echo ${lineversion:5:30}

Outro método seria cortar um pouco dos caracteres desnecessários:

echo ${lineversion} | cut -d '/' -f3 | sed 's/\.tar\.bz2$//g'
    
por 14.03.2016 / 18:04

Tags