【问题标题】:Bash array from file来自文件的 Bash 数组
【发布时间】:2018-06-23 06:30:30
【问题描述】:

所以我有一个名为 myfile 的文本文件,它看起来像:

epochdate1 floatvalue1
epochdate2 floatvalue2
...
epochdaten floatvaluen

我正在考虑创建一个数组,我可以在其中提取一些浮点值:floatvaluen、floatvalue(n-1)、floatvalue(n-100)。

如何做到这一点?我的意思是如何从 myfile 声明这个数组以及如何选择元素?

【问题讨论】:

  • 您遇到问题的代码是什么?你的代码有什么问题?您收到错误消息吗?错误信息是什么?你得到的结果不是你期望的结果吗?你期望什么结果,为什么,你得到的结果是什么,两者有什么不同?您正在观察的行为不是期望的行为吗?期望的行为是什么,为什么,观察到的行为是什么,它们有何不同?请提供minimal reproducible example
  • 您能否提供一个精确说明您希望发生的事情,包括任何和所有规则、这些规则的例外情况、极端情况、特殊情况、边界情况和边缘情况?您能否提供示例输入和输出来展示您期望发生的情况,无论是在正常情况下,还是在所有异常情况、极端情况、特殊情况、边界情况和边缘情况下?请同时确保提供minimal reproducible example
  • “如何实现?” – 你通过编写一个程序来做到这一点。如果您的程序有问题,请仔细阅读您正在使用的所有方法、类、模块和库的文档,为您的程序编写测试,用笔和纸跟踪执行,在调试器中单步执行,然后睡在上面,从头开始,再睡,然后然后,然后将你的问题缩小到简洁、专注、简单、简短、可重复的minimal reproducible example,然后问一个专注的,关于Stack Overflow的狭隘问题。

标签: arrays bash


【解决方案1】:

你可以像这样在 Bash 中创建一个数组:

myarr=($(awk '{print $2}' file.txt))

您将能够访问它的元素,例如

echo ${myarr[0]}
echo ${myarr[10]}

或者更好的是,声明一个关联数组:

declare -A myarr
eval myarr=($(awk '{print "["$1"]="$2}' file.txt))

你就可以像这样访问它

echo "${myarr[epochdaten]}"

输出:floatvaluen

【讨论】:

  • 或者只是创建一个关联数组,以纪元日期为键)
猜你喜欢
  • 2020-07-09
  • 2015-12-29
  • 2016-02-05
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多