Tengo una variable con valor como:

@capability_ids type="list">[LOADBALANCER]</capability_ids>@

Y necesita extraer de este tipo de equipo de cadena (LOADBALANCER).

Intenté usar cortar, pero no sé cómo escribir el comando cortar con diferentes delimitadores.

DeviceType=$( echo $DeviceTypeDirty | cut -d'[' -f1)

¿Puede Enywone ayudarme con la solución correcta en bash?

2
Vasiliy Vegas 28 dic. 2016 a las 16:18

3 respuestas

La mejor respuesta

Use awk con expresión regular: awk -F '[\\[\\]]' '{print $2}'

$ echo '@capability_ids type="list">[L3SWITCH]/capability_ids>@'|awk -F '[\\[\\]]' '{print $2}'
$ L3SWITCH

$ DeviceType=$( echo "$DeviceTypeDirty" | awk -F '[\\[\\]]' '{print $2}')
2
gniourf_gniourf 28 dic. 2016 a las 13:32

Usando cut:

DeviceTypeDirty="@capability_ids type="list">[LOADBALANCER]</capability_ids>@"
DeviceType="$(echo "$DeviceTypeDirty" | cut -d'[' -f2 | cut -d']' -f1)"

Salida:

echo "$DeviceType"
LOADBALANCER
1
gniourf_gniourf 28 dic. 2016 a las 21:45

Traté y pude extraer "EQUILIBRADOR DE CARGA"

Administrators-MacBook-Pro:~$ echo "\"list\">[LOADBALANCER]   
</capability_ids>@"|awk -F '[][]' '{print $2}'
LOADBALANCER
Administrators-MacBook-Pro:~$ 

¡Espero que eso ayude!

2
anudeep 28 dic. 2016 a las 14:16