
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