LinuxSir.cn,穿越时空的Linuxsir!

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

考考你?[关于数组]

[复制链接]
发表于 2003-9-9 01:05:08 | 显示全部楼层 |阅读模式
现有两个数组a,b
a的内容为:a b c d e
b的内容为:a f c g w e
问题:
1,比较两个数组中都存在的元素?
2,找出a中有而b中没有的?
 楼主| 发表于 2003-9-9 11:53:02 | 显示全部楼层
我先来吧~~
  1. [/home/javalee/myshell]cat bj
  2. #!/bin/ksh
  3. #
  4. #
  5. set -A arg1 a b c d e
  6. set -A arg2 a f c g w e
  7. echo "数组arg1:"${arg1[*]}"\t":"个数":${#arg1[*]}"\n""数组arg2:"${arg2[*]}"\t":"个数":${#arg2[*]}
  8. for i in ${arg1[*]};do
  9.         for j in ${arg2[*]};do
  10.         echo $i $j
  11.         done
  12. done>a$$
  13. echo "两个数组相同的元素是:"
  14. same=$(awk '$1==$2 {print $1}' a$$)
  15. echo $same
  16. diff=$(awk '$1 != $2 {print $1}' a$$|uniq -d )
  17. echo "数组a中存在而数组b中不存在的元素是:"
  18. echo $same $diff|tr ' ' '\n'|sort|uniq -u|tr '\n' ' '
  19. echo "\n"
  20. rm a$$
  21. [/home/javalee/myshell]bj
  22. 数组arg1:a b c d e      :个数:5
  23. 数组arg2:a f c g w e    :个数:6
  24. 两个数组相同的元素是:
  25. a c e
  26. 数组a中存在而数组b中不存在的元素是:
  27. b d
  28. [/home/javalee/myshell]
复制代码
我的方法效率忒低下,希望兄弟们把你们写的帖出来,多多交流!
修改了一下,把生成两个临时文件改成一个啦,(那个多余),这样就不用那个tee,我想要比原来的要好些吧~~~
发表于 2003-9-9 14:47:58 | 显示全部楼层
版主答案公布的太快了,大家还都没弄呢~~(虽然我不会~~呵呵)
 楼主| 发表于 2003-9-9 17:41:14 | 显示全部楼层
最初由 ravingboy 发表
版主答案公布的太快了,大家还都没弄呢~~(虽然我不会~~呵呵)

抛砖引玉嘛~~;)
发表于 2003-9-10 09:06:50 | 显示全部楼层
版主的源码中怎么有中文啊,如果要在shell 中输入,应该怎么做呢?
 楼主| 发表于 2003-9-10 14:31:50 | 显示全部楼层
最初由 seazon 发表
版主的源码中怎么有中文啊,如果要在shell 中输入,应该怎么做呢?

在X下直接就可以输入的呀,如果是文本模式下就装个zhcon.(我的E文太差所以...)
发表于 2003-9-10 15:42:02 | 显示全部楼层
最初由 javalee 发表
在X下直接就可以输入的呀,如果是文本模式下就装个zhcon.(我的E文太差所以...)


版主啊!既然你提到zhcon,我有个问题,为什么我编译好后,系统会告诉我在某个位置少了几个文件(具体的我已经记不清了),不知道应该怎么解决啊!
发表于 2003-9-10 15:46:05 | 显示全部楼层
我想出来的方法是sort之后写入文件,然后用diff
最后分析diff的结果
可能效率还要低下吧。呵呵
发表于 2003-9-10 16:31:28 | 显示全部楼层
最初由 seazon 发表
版主啊!既然你提到zhcon,我有个问题,为什么我编译好后,系统会告诉我在某个位置少了几个文件(具体的我已经记不清了),不知道应该怎么解决啊!

恐怕是说少库文件吧!?象 libxxx.so.1这样的。如果是,首先确保你已经把文件安装到了正确的位置:用源码编译的话就是最后要以 root 身份执行 make install;其次,要确保更新了库文件记录的 cache:用 root 身份执行 /sbin/ldconfig。这样应该就可以了。
发表于 2003-9-10 20:22:13 | 显示全部楼层
perl只用几行就够了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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