如何比较两组数据,并格式化第2组数据??

两组数据:

A组:

36        18        19        70        97         
66        71        13        23        48         
23        68        8        11        12         


B组数据:


97        19        18        36        18        28        71
53        24        33        48        13        66        25
55        12        11        75        36        23        19



比较A组和B组数据,  是每行对应每行来比较, 就比如A组的第一行和B组的第一行比较。以此类推。

如果B组中和A组中有相同的数字,则把B组相同的数字栅格。

比如B组第一行,相同的数字有 19,18,36

则第一行比较后的结果是

下载 (5.1 KB)
2011-06-15 15:41



我不知道shell中可不可以实现数字栅格, 如果不能的话,可以用别的格式代替。只是为了醒目,但要能复制到其他文件中。屏幕醒目就不用了。

作者: vitas333_cu   发布时间: 2011-06-15

第一行的97为什么不相同

作者: ly5066113   发布时间: 2011-06-15

同问

作者: zooyo   发布时间: 2011-06-15

回复 ly5066113


    不好意思, 写错了。  97 是相同的。

作者: vitas333_cu   发布时间: 2011-06-15

高手给个解法 我想学习下

作者: nugget   发布时间: 2011-06-15

try:
  1. awk '{getline v<"file1";for(i=1;i<=NF;i++)if(index(v,$i))$i="-"}1' file2
复制代码

作者: ly5066113   发布时间: 2011-06-15

回复 ly5066113


    可以保留 数字吗??  因为 用横线替换了 就不知道什么数字相同了、

作者: vitas333_cu   发布时间: 2011-06-15

回复 ly5066113


    大师啊,学习了,这个index()函数不会用,想了N个办法没搞定。

作者: zooyo   发布时间: 2011-06-15

回复 vitas333_cu

很难实现你想要的横线划掉数字的效果,看看这样行不行。
  1. awk '{getline v<"file1";for(i=1;i<=NF;i++)if(index(v,$i))$i="-"$i"-"}1' file2
复制代码

作者: ly5066113   发布时间: 2011-06-15

  1. awk '{getline v<"a";for(i=1;i<=NF;i++)if(index(v,$i))$i="["$i"]"}1' b
  2. [97] [19] [18] [36] [18] 28 71
  3. 53 24 33 [48] [13] [66] 25
  4. 55 [12] [11] 75 36 [23] 19
复制代码

作者: zooyo   发布时间: 2011-06-15