두 파일에서 가져온 두 숫자의 차이를 찾으려고 합니다. 내 코드가 의미가 있다고 생각합니다.
나는 성공하지 않고 작동하도록 두 가지 다른 방법을 시도했습니다. 내가 얻는 출력은 0입니다.
#method 1
difference_btwn_eng_hrs_MX3_122=$(($(sed -n '1p' engine_hours_new_MX3_122.txt)-$(sed -n '1p' engine_hours_old_MX3_122.txt)))
echo "$difference_btwn_eng_hrs_MX3_122"
#method 2
new=$(sed -n '1p' engine_hours_new_MX3_122.txt)
old=$(sed -n '1p' engine_hours_old_MX3_122.txt)
echo "$new $old" | awk '{print $new - $old}'
결국에는 diff를 사용하여 이메일 업데이트 간격을 설정하겠습니다.
파일 내부 값은 511.786(신규), 509.768(기존)이고 터미널에서 나오는 오류는 다음과 같습니다.
line 40: 511.786-509.765: syntax error: invalid arithmetic operator (error token is ".786-509.765")
답변1
첫 번째 예제의 문제점은 bash
정수에서만 작동하고 두 번째 시도 awk
는 전혀 정확하지 않다는 것입니다.
bc
이 직업 에 추천하는 것 :
bc <<< "$new-$old"
<<<
그게 바로 소위야여기에 있는 문자열이며 기본적으로 더 짧은 형식입니다 echo "$new-$old" | bc
.
awk
원하는 경우 명령을 수정할 수도 있습니다.
echo "$new $old" | awk '{print $1-$2}'
또는 (사용여기에 있는 문자열위와 같이):
awk '{print $1-$2}' <<< "$new $old"