【问题标题】:How to compare contents of two arrays? how can we point the specific lines on one of the array if conditions meet?如何比较两个数组的内容?如果条件满足,我们如何将特定线指向数组之一?
【发布时间】:2018-05-09 13:43:04
【问题描述】:

我有${array1[@]}

Application_1007896 60
Application_8907897 50
Application_5678342 7
Application_1289764 9
Application_8907899 5
Application_8917899 21

${array2[@]}

Application_5678342
Application_1289764
Application_8907897
Application_5678342
Application_1289764

我们如何检查${array2[@]} 的内容是否驻留在${array1[@]} 中。当条件满足时,应该能够从${array1[@]} 获取相应的值(其中条件满足)并总结它们。

【问题讨论】:

  • 到目前为止你尝试了什么?
  • Stack Overflow 不是代码编写服务。请出示您的代码。由于 Stack Overflow 向您隐藏了关闭原因:寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及在问题本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example
  • 我将从 array1 的元素创建一个关联数组。然后根据array2的元素将数值循环起来就非常简单了。

标签: arrays linux bash shell ubuntu


【解决方案1】:

下面的代码块假定第二个数组有值,并假定它只会返回两个数组中都存在的条目。

for entry_1 in "${array1[@]}" ; do
   for entry_2 in "${array2[@]}" ; do
       entry_1_split=(${entry_1// /})
       entry_2_split=(${entry_2// /})
       if [[ "${entry_1_split[0]}" == "${entry_2_split[1]}" ]] ; then
          echo "${entry_1_split[0}} $((${entry_1_split[1]}+${entry_2_split[1]))"
       fi
   done
done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    相关资源
    最近更新 更多