我想将文件 1 的第二列 - 可用内存与文件 2 的第二列 - 使用内存进行比较。如果文件 1(第 2 列)为“freememory”> 文件 2(第 2 列)为“usedmemory”,则打印 file2(第 1 列)-“机器”可以重定位到文件 1(第 1 列)-“存储”,否则 file2(第一列)-“机器”无法重定位到文件 1(第一列)-“存储”,
比较应该在 file2 的第一行和 file1 的第一行之间进行。 file2 的第 2 行和 file1 的第 2 行。这意味着 file2 的第 n 行应该只与 file1 的第 n 行进行比较。
这两个文件均按降序排序。
file1 根据column2 的降序排序
file2 根据column2 的降序排序。
文件1-
Storage,Freememory
0843,282856
0867,270891
0842,232803
0868,213426
0849,188785
0844,188784
0860,169249
0855,169246
0862,169245
0853,169244
0850,112497
0857,112496
0841,112496
0839,112495
0848,112494
0851,112493
文件2-
Machine,UsedMemory
x0aaa06,111113232
x0aaa05,78851
x0aaa01,10243
x0aaa03,4099
期望的输出 -
x0aaa06 cannot be relocated to 0843
x0aaa05 can be relocated to 0867
x0aaa01 can be relocated to 0842
x0aaa03 can be relocated to 0868
答案1
我假设 file1 没有空的第二行。
paste -d, file1 file2 | awk -F, 'NR>1{if ($2 > $4) print $3,"can be relocated to",$1 ; else print $3,"cannot be relocated to",$1}'
用于paste
向 awk 提供一个由各行的组合列组成的“文件”。
awk 本身非常简单,从第 2 行(NR > 1)开始并使用 print 而不是 printf 因为我很懒。