Bash 从具有不同分隔符的行中剪切文本

Bash Cut text from line with different delimiters

我有一个变量,其值如下:

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

并且需要从这个字符串中提取出设备类型(LOADBALANCER)。

我尝试过使用 cut,但不知道如何使用不同的分隔符编写 cut 命令。

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

enywone 可以帮我在 bash 上找到正确的解决方案吗?

使用 awk 和正则表达式:awk -F '[\[\]]' '{print }'

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

$ DeviceType=$( echo "$DeviceTypeDirty" | awk -F '[\[\]]' '{print }')

我尝试并提取了 "LOADBALANCER"

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

希望对您有所帮助!

使用cut:

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

输出:

echo "$DeviceType"
LOADBALANCER