我试图从看起来像这样的命令中获取输出:
Thing ID: 1234
Object_Name = MyObject1
Object_Owner = MeMyselfAndI
Thing ID: 5678
Object_Name = MyObject2
Object_Owner = MeMyselfAndI
并将这些行集合放入这样的数组中的自己的元素中(其中括号分隔数组的元素):
MyArray =
[ Thing ID: 1234
Object_Name = MyObject1
Object_Owner = MeMyselfAndI ]
[ Thing ID: 5678
Object_Name = MyObject2
Object_Owner = MeMyselfAndI ]
以便检索元素,例如
${MyArray[0]})
会产生以下结果:
Thing ID: 1234
Object_Name = MyObject1
Object_Owner = MeMyselfAndI
换句话说,我想在这里使用“Thing ID:”作为分隔符(各种各样的分隔符),但是将它保存在每个数组元素中。在bash中这可能吗?
提前致谢!
答案 0 :(得分:2)
您可以使用awk在每个块之后插入\0
并使用该输出创建数组:
arr=()
while IFS= read -rd '' line; do
arr+=("${line#$'\n'}")
done < <(awk -v RS= '{print $0 "\0"}' file)
检查输出:
echo "${arr[0]}"
Thing ID: 1234
Object_Name = MyObject1
Object_Owner = MeMyselfAndI
echo "${arr[1]}"
Thing ID: 5678
Object_Name = MyObject2
Object_Owner = MeMyselfAndI