bash - 解析特定格式的字符串并存储其内容以供进一步处理
问题描述
我有一个格式如下的字符串。LHS 上的字符串可以是任何字符串,RHS 上的结果在 {} 中具有不同长度的值,其中一些由分隔符分隔。
我无法理解如何将 LHS 和 RHS 提取为两个不同的变量。
输入字符串格式:
[TEAM DETAILS]={2,TeamName,23,4697}
我希望能够提取 LHS 让我们说成一个数组。对于 RHS,我需要处理以逗号分隔的每个条目并将它们也存储到一个数组中。
我无法理解如何做到这一点。它看起来很简单,但我无法从中得到逻辑。
解决方案
这个脚本:
# input
in="[TEAM DETAILS]={0001/0880,TeamName,0881,0882/3999,8400/8499,4900/4999,6900/6999,9101,9104,5851,5850,5855,7697}"
# get var name
# remove everything after ]=
var="${in%]=*}"
# remove the leading [
var="${var#[}"
# get values
# remove everything before ={
valstr="${in#*={}"
# remove trailing }
valstr="${valstr%'}'}"
# read string as array
IFS=, read -r -a "values" <<<"$valstr"
# output
declare -p var values
declare -- var="TEAM DETAILS"
declare -a values=([0]="0001/0880" [1]="TeamName" [2]="0881" [3]="0882/3999" [4]="8400/8499" [5]="4900/4999" [6]="6900/6999" [7]="9101" [8]="9104" [9]="5851" [10]="5850" [11]="5855" [12]="7697")
推荐阅读
- jquery - dataTable 参数在角度 6 中不起作用
- python - 将参数传递给 Python 线程时出现 TypeError
- java - Spring Boot 读取不带前缀的地图属性
- entity-framework - 使用实体框架(流利的 Api)的可选一对多关系
- c# - 如何将json响应日期字符串转换为c#日期格式?
- sql - SQL 将数据插入临时表并将结果另存为视图
- html - 如何从 Spring Boot genericResponse 方法重定向到 HTML 静态页面
- django - Fetch API 会导致 Django 中的 CSRF 错误,但不会导致 cURL?
- excel - 如何使用查找功能在列中统一值
- python - 不确定为什么异步任务在事件循环之外完成