두 파일의 열을 비교하고 그에 따라 데이터를 인쇄합니다.

두 파일의 열을 비교하고 그에 따라 데이터를 인쇄합니다.

파일 1의 두 번째 열(사용 가능한 메모리)과 파일 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에 빈 두 번째 줄이 없다고 가정합니다.

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를 사용합니다.

관련 정보