arrays - bash:将大括号处的文本文件拆分为数组

标签 arrays bash split text-files

我非常彻底地搜索了该网站,但未能找到合适的答案 - 很可能我没有提出正确的问题。

我有一个文本文件,其中包含多达数千行坐标,其格式如下例所示:

[1]
-75.4532 75.8273 
-115.00 64.5 
-90.00 74.3333 
-100.00 72.4167 
-110.00 69.00 
-120.8 56.284 
[2]
-70.00 73.75 
-100.00 69.3333 
-110.00 65.1533 
-90.00 71.5833 
-80.00 73.00 
[3]
-100.00 67.5 
-67.7133 72.6611 
-80.00 71.5 
-90.00 70.00 
-110.00 63.8667 
-115.8 60.836 

我想要实现的是将文件拆分为括号中数字的数组。这样我就可以使用括号中的数字作为数组索引,并使用下面的行作为相应的值。

下一步将循环遍历数组,将每个元素提供给另一个程序。如果有更优雅的方法我愿意倾听。

祝一切顺利!

最佳答案

您可以使用 sed 将文件整理为 bash 数组定义:

declare -a "$(sed 's/\[/" &/g; s/\]/&="/g' file | sed '1s/^"/arr=(/; $s/$/")/')"
echo "${arr[2]}"
echo
echo ${arr[2]}
-70.00 73.75 
-100.00 69.3333 
-110.00 65.1533 
-90.00 71.5833 
-80.00 73.00 

-70.00 73.75 -100.00 69.3333 -110.00 65.1533 -90.00 71.5833 -80.00 73.00

带引号和不带引号的打印以展示差异

关于arrays - bash:将大括号处的文本文件拆分为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19840155/

相关文章:

ios - 如何过滤二维数组

arrays - 在 Ruby 中创建空子数组的数组

java - BASH 脚本将值输入 Java 扫描器

ruby - 如何将字符串切成少于 500 个字符的 block 但不在 < > 括号内切割?

python - 在 Python 中,根据该数组特定列中的值将数组行分成组

c - 在 C 中将 double 存储在数组中

ruby - 按日期优化哈希分组数组

linux - 如何在 bash 中重命名包含反斜杠的文件名?

bash - 仅文件通配和匹配数字

python - 如何在Python中拆分只有一个整数值的列表?