我需要匹配列的值

时间:2013-07-05 19:50:32

标签: awk

我在每个文件中有两个文件我有两列,我需要将file1第二列的第一个值与file2第二列的每个值匹配,如果它们相等我需要减去匹配值的值第一列,之后我需要将两个文件中的第一列合并到一个文件中,但这两列应该彼此相邻 如果两个vales不匹配则什么都不做

文件1

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

file2的

766  0
937  1
980  2
237  3
736  5

例如

422
208
251

3 个答案:

答案 0 :(得分:1)

我不明白你是如何想出你的输出的。这可能会对您有所帮助:

$ join -j 2 file1 file2
0 344 766
1 465 937
2 729 980
3 777 237
5 862 736

但是从那里开始,你需要提供更多细节。

答案 1 :(得分:1)

要扩大@glenn jackman的答案......也许这就是:

join -j 2 file1 file2 | awk '{if ($3>$2) print $3-$2; else print $2-$3}'

当列2中存在匹配时,将打印两列1的绝对差值。但它与您的预期输出不符,除了第一个值之外,它似乎与您的输入没有任何明显的关系,似乎与您的问题相符......

答案 2 :(得分:1)

可能会有所帮助:

awk '
BEGIN { printf "%s\t%s\t%s\n","File1","File2","Difference(f2-f1)" }
NR==FNR { a[$2]=$1; next }
{ printf "%d\t%d\t%d\n",a[$2],$1,$1-a[$2] }' file1 file2

输出:

File1   File2   Difference(f2-f1)
344     766      422
465     937      472
729     980      251
777     237     -540
862     736     -126