+ -
当前位置:首页 → 问答吧 → 如何比较2个数组

如何比较2个数组

时间:2011-03-01

来源:互联网

A="aa bb cc dd ee"
B="AA bb CC dd ee"

比较结果输出如下:

X=aa cc

作者: chinaboywg   发布时间: 2011-03-01

这两个都不是数组

作者: cjaizss   发布时间: 2011-03-01



QUOTE:
这两个都不是数组
cjaizss 发表于 2011-03-01 12:44




    那如何比较?

作者: chinaboywg   发布时间: 2011-03-01

本帖最后由 昭襄王 于 2011-03-01 13:11 编辑
  1. #! /bin/bash
  2. A="aa bb cc dd ee"
  3. B="AA bb CC dd ee"

  4. AA=($A)
  5. BB=($B)
  6. for i in `seq 0 ${#AA[@]}`;do
  7.   if [ ${AA[$i]} != ${BB[$i]} ];then
  8.     X[$i]=${AA[$i]}
  9.   fi
  10. done
  11. echo ${X[@]}
复制代码

作者: 昭襄王   发布时间: 2011-03-01



QUOTE:
A="aa bb cc dd ee"
B="AA bb CC dd ee"

比较结果输出如下:

X=aa cc
chinaboywg 发表于 2011-03-01 12:41




    如果
A="aa xx bb cc dd ee"
B="AA bb CC dd ee"
你想输出什么呢?

作者: cjaizss   发布时间: 2011-03-01

回复 cjaizss


    输出 A在B中没有的

作者: chinaboywg   发布时间: 2011-03-01

本帖最后由 yinyuemi 于 2011-03-01 14:20 编辑

awk 'NR==1{for(i=1;i<=NF;i++) B[$i]=1}NR==2{for(j=1;j<=NF;j++) {if(B[$j]!=1) print $j}} ' <(echo $B) <(echo $A)
aa
cc

作者: yinyuemi   发布时间: 2011-03-01



QUOTE:
awk 'NR==1{for(i=1;i
yinyuemi 发表于 2011-03-01 14:16




    awk 'NR==1{for(i=1;i<=NF;i++) B[$i]=1}NR==2{for(j=1;j<=NF;j++) {if(B[$j]!=1) print $j}} ' <(echo $B) <(echo $A)
awk: (FILENAME=/dev/fd/62 FNR=3) fatal: error reading input file `/dev/fd/63': Bad file descriptor

作者: chinaboywg   发布时间: 2011-03-01



QUOTE:
回复  cjaizss


    输出 A在B中没有的
chinaboywg 发表于 2011-03-01 13:58




    那还是awk吧,awk的hashtable很好很强大

作者: cjaizss   发布时间: 2011-03-01



QUOTE:
awk 'NR==1{for(i=1;i
chinaboywg 发表于 2011-03-01 14:39



我这里可以
  1. echo $A
  2. aa bb cc dd ee

  3. echo $B
  4. AA bb CC dd ee

  5. awk 'NR==1{for(i=1;i<=NF;i++) B[$i]=1}NR==2{for(j=1;j<=NF;j++) {if(B[$j]!=1) print $j}} ' <(echo $B) <(echo $A)
  6. aa
  7. cc
复制代码

作者: yinyuemi   发布时间: 2011-03-01

热门下载

更多