両方のファイルの列を比較し、それに応じてデータを印刷します。

両方のファイルの列を比較し、それに応じてデータを印刷します。

ファイル1の2番目の列(使用可能なメモリ)とファイル2の2番目の列(使用済みメモリ)を比較したいと思います。 file1(列 2) が "freememory" > file2(列 2) が "usedmemory" の場合 print file2(列 1) - "machine" を file1(列 1) - "Storage" に再配置でき、そうでなければ file2(最初の列)-"machine" は file1(最初の列)-"storage" に再配置できません。

比較は、file2の最初の行とfile1の最初の行との間で行わなければなりません。 file2 の行 2 と file1 の行 2 です。これは、file2のn番目の行をfile1のn番目の行とのみ比較する必要があることを意味します。

どちらのファイルも降順でソートされます。

file1は列2の降順でソートされます。
ファイル2は列2の降順でソートされます。

ファイル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に空の2行目がないとします。

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)で始まり、怠惰なので、printfの代わりにprintを使用します。

おすすめ記事