LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1234|回复: 11

怎么从多个数组中提取某些共同的元素?

[复制链接]
发表于 2006-11-22 16:58:09 | 显示全部楼层 |阅读模式
比如:
aa=(11 33 55 77))
bb=(11 22 44 66)
cc=(11 88 99)
这些数组中,怎么提取11?
发表于 2006-11-22 18:18:48 | 显示全部楼层
用for循环阿。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-22 19:01:00 | 显示全部楼层
怎么for循环?感觉不行
回复 支持 反对

使用道具 举报

发表于 2006-11-22 20:23:45 | 显示全部楼层
想想。
回复 支持 反对

使用道具 举报

发表于 2006-11-23 19:35:50 | 显示全部楼层
用sort+uniq
两个数组可以用for,多个的话,就累啦
回复 支持 反对

使用道具 举报

发表于 2006-11-24 13:57:23 | 显示全部楼层
能否慷慨点。把你的用法写出来。让我学习学习!!!谢谢了
回复 支持 反对

使用道具 举报

发表于 2006-11-24 16:20:16 | 显示全部楼层

  1. aa=(11 33 55 77)
  2. bb=(11 22 44 66 77)
  3. cc=(11 88 99 77)

  4. for i in `echo ${aa[*]}`
  5. do  for j in `echo ${bb[*]}`
  6.     do  for z in `echo ${cc[*]}`
  7.         do  if [ $i == $j -a $i == $z -a $j == $z ]; then
  8.                echo $i
  9.             fi
  10.         done
  11.     done
  12. done

  13. #./run
  14. 11
  15. 77
复制代码

我菜鸟,上面的笨办法。
回复 支持 反对

使用道具 举报

发表于 2006-11-24 16:25:21 | 显示全部楼层
  1. aa=(11 33 55 77)
  2. bb=(11 22 44 66 77)
  3. cc=(11 88 99 77)

  4. for (( i = 0; i < ${#aa[*]}; i++))
  5. do  for (( j = 0; j < ${#bb[*]}; j++))
  6.     do  for (( z = 0; z < ${#cc[*]}; z++))
  7.         do  if [ ${aa[i]} == ${bb[j]} -a ${aa[i]} == ${cc[z]} -a ${bb[j]} == ${cc[z]} ]; then
  8.                echo ${aa[i]}
  9.             fi
  10.         done
  11.     done
  12. done

  13. #./run
  14. 11
  15. 77
复制代码


这又写了个更笨的...
回复 支持 反对

使用道具 举报

发表于 2006-11-24 16:28:58 | 显示全部楼层
  1. aa=(11 33 55 77)
  2. bb=(11 22 44 66 77)
  3. cc=(11 88 99 77)

  4. for (( i = 0; i < ${#aa[*]}; i++))
  5. do  if [ "`echo ${bb[*]} | grep ${aa[i]}`" -a "`echo ${cc[*]} | grep ${aa[i]}`" ]; then
  6.        echo ${aa[i]}
  7.     fi
  8. done

  9. #./run
  10. 11
  11. 77
复制代码

又写了个很无聊的...

同理:
  1. aa=(11 33 55 77)
  2. bb=(11 22 44 66 77)
  3. cc=(11 88 99 77)

  4. for i in `echo ${aa[*]}`
  5. do  if [ "`echo ${bb[*]} | grep $i`" -a "`echo ${cc[*]} | grep $i`" ]; then
  6.        echo $i
  7.     fi
  8. done

  9. #./run
  10. 11
  11. 77
复制代码
回复 支持 反对

使用道具 举报

发表于 2006-11-24 16:45:08 | 显示全部楼层
Post by 寂寞烈火
用sort+uniq
两个数组可以用for,多个的话,就累啦



uniq我接触的少,那样的话不就把相同的数去掉了吗??
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表