BASH를 사용하여 다른 2개의 파일에서 추출된 2개의 부동소수점을 빼는 방법 [중복]

BASH를 사용하여 다른 2개의 파일에서 추출된 2개의 부동소수점을 빼는 방법 [중복]

두 파일에서 가져온 두 숫자의 차이를 찾으려고 합니다. 내 코드가 의미가 있다고 생각합니다.

나는 성공하지 않고 작동하도록 두 가지 다른 방법을 시도했습니다. 내가 얻는 출력은 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"

관련 정보