두 개의 음수 부동 소수점 숫자 사이의 차이를 계산한 다음 결과가 특정 임계값 미만인지 확인하고 싶습니다. 이 계산은 여러 번 수행되므로 숫자가 저장되므로 file.dat
계산은 수동 서식 지정 없이 파일에서 직접 값을 가져와야 합니다. 이렇게 생겼 file.dat
습니다.
-.63354975E+03 -.63354982E+03
bc
이제 bash는 부동 소수점 숫자를 처리할 수 없기 때문에 다음을 시도했습니다 .
paste -sd- file.dat | bc >> file.dat
이 paste
명령은 입력을 다음으로 변환합니다.
-.63354975E+03--.63354982E+03
bc
빼야 하는데 오류 메시지가 나타납니다 (standard_in) 1: syntax error
. 를 사용하여 sed
숫자를 양수로 변경한 다음 이를 더할 수 있지만 를 사용하여 직접 수행할 수 있는 방법이 있습니까 bc
?
그것을 사용할 때 다른 문제가 발생합니다 paste -sd+ file.dat | bc >> file.dat
. 이렇게 하면 숫자가 합산되어야 하지만 결과는 4.932900412
예상한 것과는 거리가 멀습니다 1267.09957
. 서식이 지정된 숫자를 사용하여 계산을 입력하면 -633.54975+-633.54982
예상한 결과를 얻습니다. 따라서 bc
지수가 있는 숫자를 올바르게 처리하지 못하는 것 같습니다. 이 문제를 해결할 방법이 있나요?
답변1
awk
해결책:
awk 'NR==1{a=$0};NR==2{b=$0};END{print (a)-(b)}' file.dat