Como obter uma string entre dois caracteres especiais usando Shell?

Como obter uma string entre dois caracteres especiais usando Shell?

Quero obter uma string entre dois caracteres especiais. Por exemplo,

/home/oracle/ggs/text.ext

Eu querooráculo/ggsna sequência acima.

Como posso fazer isso usando o bash?

Responder1

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

Isso retorna a parte depois /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

Responder2

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]'

Responder3

Bash

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

informação relacionada