![BASH를 사용하여 다른 2개의 파일에서 추출된 2개의 부동소수점을 빼는 방법 [중복]](https://linux55.com/image/61083/BASH%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%8B%A4%EB%A5%B8%202%EA%B0%9C%EC%9D%98%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EC%B6%94%EC%B6%9C%EB%90%9C%202%EA%B0%9C%EC%9D%98%20%EB%B6%80%EB%8F%99%EC%86%8C%EC%88%98%EC%A0%90%EC%9D%84%20%EB%B9%BC%EB%8A%94%20%EB%B0%A9%EB%B2%95%20%5B%EC%A4%91%EB%B3%B5%5D.png)
두 파일에서 가져온 두 숫자의 차이를 찾으려고 합니다. 내 코드가 의미가 있다고 생각합니다.
나는 성공하지 않고 작동하도록 두 가지 다른 방법을 시도했습니다. 내가 얻는 출력은 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"