Como obter uma string entre dois caracteres especiais usando o Shell?

3

Eu quero pegar uma string entre dois caracteres especiais. Por exemplo,

/home/oracle/ggs/text.ext

Eu quero oracle / ggs na string acima.

Como posso fazer isso usando o bash?

    
por BOB 11.06.2014 / 22:00

3 respostas

4

$ expr /home/oracle/ggs/text.ext : '/home/\(.*\)/'
oracle/ggs

Isso retorna a parte depois de /home/ e antes do último / .

Outras abordagens possíveis que atenderão aos seus requisitos:

$ echo /home/oracle/ggs/text.ext | cut -d/ -f3,4
oracle/ggs
$ echo /home/oracle/ggs/text.ext | cut -c 7-16
oracle/ggs
$ echo oracle/ggs
oracle/ggs
    
por 11.06.2014 / 22:17
3

Para este exemplo específico, você pode usar awk :

echo "$string" | awk -F '/' '{printf "%s%s%s\n" ,$2,FS,$3}'

O mesmo em Perl:

echo "$string" | perl -lanF '/' -E '$,="/";say @F[1,2]'
    
por 11.06.2014 / 22:03
0

Bash

IFS=/ read -ra a <<<'/home/oracle/ggs/text.ext' && 
(IFS=/; printf '%s\n' "${a[*]:2:2}") 
oracle/ggs
    
por 11.06.2014 / 22:22

Tags