
Quiero obtener una cadena entre dos caracteres especiales. Por ejemplo,
/home/oracle/ggs/text.ext
Quierooráculo/ggsen la cadena anterior.
¿Cómo puedo hacer esto usando bash?
Respuesta1
$ expr /home/oracle/ggs/text.ext : '/home/\(.*\)/'
oracle/ggs
Eso devuelve la parte después /home/
y antes de la última /
.
Otros enfoques posibles que cumplirán con sus 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
Respuesta2
Para este ejemplo en particular, puedes usar awk
:
echo "$string" | awk -F '/' '{printf "%s%s%s\n" ,$2,FS,$3}'
Lo mismo en Perl:
echo "$string" | perl -lanF '/' -E '$,="/";say @F[1,2]'
Respuesta3
Intento
IFS=/ read -ra a <<<'/home/oracle/ggs/text.ext' &&
(IFS=/; printf '%s\n' "${a[*]:2:2}")
oracle/ggs