Bash脚本查找第二个列表中第一个出现的列表元素

乔希

我有一个数字列表(没有重复项)val_str="11 22 33",可以根据需要将其存储为数组,例如:val_arr=(11 22 33)

我还有第二个数字列表,这些数字来自制表符分隔文件中的字段。如果需要,我可以将这些数字写到一个单独的文件中awk以下是一些玩具数据:

echo -e "66\n55\n99\n33\n11\n88\n77\n22\n33" > list

我想找到在val_arr中第一个出现的元素的值list的某些元素val_arr可能不会出现在中list如果中的所有元素都val_arr出现在下面的代码中,则可以工作list,但如果不是这样的话,则失败,例如if val_arr=(11 44 22 33)

val_arr=(11 22 33)
echo -e "66\n55\n99\n33\n11\n88\n77\n22\n33" > list
pos_arr=()
for i in ${!val_arr[@]}; do
    list_pos=$(grep -nm 1 ${val_arr[$i]} list | cut -f1 -d:)
    pos_arr+=( ${list_pos} )
done

pos1=$(echo ${pos_arr[@]} | tr ' ' '\n' | awk 'NR==1 {min=$0} NR>1 && $1<min {min=$1; pos=NR} END {print pos}')
pos0=$(( pos1 - 1 ))
val=${val_arr[$pos0]}

对于两者val_arr=(11 22 33)val_arr=(11 44 22 33)我都希望脚本返回33

我的问题是:

  1. 有一个更好的方法吗?
  2. 有没有一种方法可以使此代码对丢失的值具有鲁棒性(比将所有值附加val_arrylistwith的末尾更优雅echo ${pos_arr[@]} | tr ' ' '\n' >> list)?

谢谢!

PS感谢@AdrianFrühwirthawk从此处提供了上面代码:https : //stackoverflow.com/questions/16610162/bash-return-position-of-the-smallest-entry-in-an-array

钢铁司机

如何val_arr变成grep模式或表达式列表

$ echo "${val_arr[@]/#/-e}"
-e11 -e44 -e22 -e33

并直接使用它?

$ grep -wFm1 "${val_arr[@]/#/-e}" list
33

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从第二个列表中减去第一个列表中的元素

来自分类Dev

从列表中的3个元组中获取第一个和第二个元素-Haskell

来自分类Dev

如果第二个元素相同,则将列表中的第一个元素合并为元组?

来自分类Dev

在另一个列表中列出,但是第一个列表中的元素不需要在第二个列表中一个接一个地出现

来自分类Dev

python:在一个列表中查找索引,然后用第一个列表中索引的项目替换第二个列表

来自分类Dev

Python stdout和for循环不会打印列表中的第一个元素(第二个元素替换了第一个)

来自分类Dev

比较两个列表,并打印第二个列表中的元素(如果它在第一个列表中),但不使用2 for循环

来自分类Dev

访问第二个最小的第二个元素的排序嵌套列表的第一个元素

来自分类Dev

Python元组列表将第二个元素与唯一的第一个元素合并

来自分类Dev

基于第一个下拉列表的动态第二个下拉列表

来自分类Dev

如何将第二个列表中的元素追加到R中第一个列表中的现有元素

来自分类Dev

如何将第一个列表中的元素与 SML 中第二个列表中的所有元素配对?

来自分类Dev

列表框项目中的第一个元素与第二个元素重叠

来自分类Dev

如何在列表python中找到第二个元素和第一个元素的差异

来自分类Dev

在数组的数组中查找第一个元素,第二个元素的值最高

来自分类Dev

如何检查第一个列表在第二个列表中某处的显示顺序是否相同

来自分类Dev

如何使用Python中的某些格式结合第二个列表和第一个列表?

来自分类Dev

根据Rails中的第一个选择列表值更改第二个选择列表

来自分类Dev

根据第一个下拉列表中的选择显示第二个下拉列表?

来自分类Dev

如何在Excel列表中选择第一个(第二个,...)非空元素?

来自分类Dev

从一对列表中获取第一个和第二个“列”

来自分类Dev

替换R中第一个出现的“:”,而不是第二个

来自分类Dev

元组列表中每个第一个元素的 scala 获取第二个元素的最大值

来自分类Dev

SQL根据第二个表中的值列表从第一个表中选择

来自分类Dev

我可以从两个列表中创建一个熊猫数据框,但是对于第一个列表的每个元素,我都会在第二个列表中追加n行作为元素?

来自分类Dev

Prolog-第一个列表是第二个列表的子列表,同时保持顺序?

来自分类Dev

循环浏览两个列表,从第一个列表中获取值,然后将它们添加到第二个列表中

来自分类Dev

检查第二个列表是否是第一个列表的一半

来自分类Dev

编写一个包含两个列表的函数,如果第一个列表与第二个列表中的相同元素相反,则返回True,否则返回False

Related 相关文章

  1. 1

    从第二个列表中减去第一个列表中的元素

  2. 2

    从列表中的3个元组中获取第一个和第二个元素-Haskell

  3. 3

    如果第二个元素相同,则将列表中的第一个元素合并为元组?

  4. 4

    在另一个列表中列出,但是第一个列表中的元素不需要在第二个列表中一个接一个地出现

  5. 5

    python:在一个列表中查找索引,然后用第一个列表中索引的项目替换第二个列表

  6. 6

    Python stdout和for循环不会打印列表中的第一个元素(第二个元素替换了第一个)

  7. 7

    比较两个列表,并打印第二个列表中的元素(如果它在第一个列表中),但不使用2 for循环

  8. 8

    访问第二个最小的第二个元素的排序嵌套列表的第一个元素

  9. 9

    Python元组列表将第二个元素与唯一的第一个元素合并

  10. 10

    基于第一个下拉列表的动态第二个下拉列表

  11. 11

    如何将第二个列表中的元素追加到R中第一个列表中的现有元素

  12. 12

    如何将第一个列表中的元素与 SML 中第二个列表中的所有元素配对?

  13. 13

    列表框项目中的第一个元素与第二个元素重叠

  14. 14

    如何在列表python中找到第二个元素和第一个元素的差异

  15. 15

    在数组的数组中查找第一个元素,第二个元素的值最高

  16. 16

    如何检查第一个列表在第二个列表中某处的显示顺序是否相同

  17. 17

    如何使用Python中的某些格式结合第二个列表和第一个列表?

  18. 18

    根据Rails中的第一个选择列表值更改第二个选择列表

  19. 19

    根据第一个下拉列表中的选择显示第二个下拉列表?

  20. 20

    如何在Excel列表中选择第一个(第二个,...)非空元素?

  21. 21

    从一对列表中获取第一个和第二个“列”

  22. 22

    替换R中第一个出现的“:”,而不是第二个

  23. 23

    元组列表中每个第一个元素的 scala 获取第二个元素的最大值

  24. 24

    SQL根据第二个表中的值列表从第一个表中选择

  25. 25

    我可以从两个列表中创建一个熊猫数据框,但是对于第一个列表的每个元素,我都会在第二个列表中追加n行作为元素?

  26. 26

    Prolog-第一个列表是第二个列表的子列表,同时保持顺序?

  27. 27

    循环浏览两个列表,从第一个列表中获取值,然后将它们添加到第二个列表中

  28. 28

    检查第二个列表是否是第一个列表的一半

  29. 29

    编写一个包含两个列表的函数,如果第一个列表与第二个列表中的相同元素相反,则返回True,否则返回False

热门标签

归档