比较两个文件的列并相应地打印数据

比较两个文件的列并相应地打印数据

我想将文件 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 因为我很懒。

相关内容