반달가면 이글루에서 백업 - 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
'bash script' 카테고리의 다른 글
[bash: date] UTC(GMT) 기준 시간을 로컬(한국) 시간으로 변환 (0) | 2023.10.17 |
---|---|
[bash: bc, if] 실수(부동소수점) 수자의 크기 비교 (0) | 2023.10.17 |
[bash: tail] 텍스트 파일 내용의 끝부분 출력 (0) | 2023.10.16 |
[bash: sed] 행 맨 앞에 있는 공백 제거 (0) | 2023.10.16 |
리눅스 bash 스크립트에서 변수/배열/연관배열 삭제/초기화 (0) | 2023.10.16 |