bash script2023. 10. 16. 08:50

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/646234

우선, 리눅스에서 bc를 이용한 산수 계산에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로

bc로 계산한 결과 값이 -1에서 1 사이일 경우, 정수 자리의 0은 표시되지 않는다. 아래의 예시를 보자.

echo "scale=2; 10/11" | bc
.90

echo "scale=2; -11/12" | bc
-.91

위의 예시에 나온 결과값을 0.90, -0.91 이렇게 표시해 주고 싶을 경우, bc 자체적인 옵션은 없는듯하고, sed를 이용해서 아래와 같이 대체를 해 줄 수 있다. sed를 이용한 문자열 대체의 기본은 여기로

결과값이 양수일 경우와 음수일 경우를 각각 대체해야 하므로, sed에 -e 옵션을 사용하여 두가지 대체 방법을 지정해 준다. -e 옵션에 대한 내용은 여기로

echo "scale=2; 10/11" | bc | sed -e 's/^-\./-0\./' -e s'/^\./0\./'
0.90

echo "scale=2; -11/12" | bc | | sed -e 's/^-\./-0\./' -e s'/^\./0\./'
-0.91

대체 규칙을 설명하자면, 정규표현식의 "^" 기호를 이용하여 "."으로 시작하는 문자열(^.)을 "0."으로 대체하고 "-."으로 시작하는 문자열(^-.)을 "-0."으로 대체하도록 하는 것이다.

728x90
Posted by 반달가면