我在每个文件中有两个文件我有两列,我需要将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
答案 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