파일 1
products total
apple 6
yam 5
fish 6
meat 3
파일 2
products total
apple 6
yam 7
fish 3
meat 5
내가하고 싶은 일. 두 파일의 내용을 비교하는 스크립트를 원합니다. 파일 1의 제품과 파일의 제품을 일치시키고 총계를 비교해야 합니다. 파일 1의 총계가 파일 2의 총계보다 크면 일부 내용을 표시해야 합니다. 다른 것이 표시되지 않아야 하는 경우
내가 기대했던 것
file 1 file 2 the output of the script
products total products total
apple 6 apple 6 they are equal
yam 5 yam 7 file 2 is more
fish 6 fish 3 file 1 is more
meat 3 meat 5 file 2 is more
답변1
귀하의 질문을 올바르게 이해한 경우:
파일이 탭으로 구분되어 있다고 가정하고 루프를 사용하여 요소의 모든 값을 저장한 다음 두 루프를 반복하여 비교합니다.
prods1=() #product names in file 1
tots1=() #totals in file 1
prods2=() #product names in file 2
tots2=() #totals in file 2
#read in the stored values
while IFS=\t read -r p t; do
prods1+=("$p")
tots1+=("$t")
done <<< file1
while IFS=\t read -r p t; do
prods2+=("$p")
tots2+=("$t")
done <<< file2
output=() #will store your output
for((i=0; i<${#tots1[@]};++i)); #you can set i to 1 if you want to skip the headers
do
#check if the values are equivalent
if ((${tots1[i]} == ${tots2[i]}));
output+="They are equal"
#ADD THE REST OF THE COMPARISONS HERE
fi
done
그 후에 배열에는 output
원하는 출력이 포함되며, 콘솔이나 원하는 형식의 파일로 인쇄할 수 있습니다. :)