比较两列并减去它们

时间:2013-07-10 15:11:23

标签: awk

我的问题

我有一个文件

344  0
465  1
729  2
777  3
676  4
862  5

766  0
937  1
980  2
837  3
936  5

我需要比较每两对(零与零,一与一,等等)如果值存在(第二列的任何值应该存在两次)减去766-344,937-465等等,如果不是存在就像第四个值什么都不做(4个存在一次所以什么也不做)输出

422
472
251
060
074

我还需要添加索引 示例

1 422
2 472
3 251
4 060
5 074

最后我需要添加此代码作为tcl脚本的一部分,或者tcl porgram的功能

我有一个tcl脚本包含像这样的awk函数

  set awkCBR0 {
    {
    if ($1 == "r" && $6 == 280) {
    print $2, i  >> "cbr0.q";
             i +=1 ;
           }
    }
    }

    exec rm -f cbr0.q 
    exec touch cbr0.q

exec awk $awkCBR0 cbr.trq

感谢

1 个答案:

答案 0 :(得分:1)

试试这个:

awk 'a[$2]{printf "%d %03d\n",++x,$1-a[$2];next}{a[$2]=$1}' file

输出

$ awk 'a[$2]{printf "%d %03d\n",++x,$1-a[$2];next}{a[$2]=$1}' file
1 422
2 472
3 251
4 060
5 074

我会留给你将它添加到tcl功能。