BC - 끝에 "\\n"이 없고 앞에 0이 있습니까?

BC - 끝에 "\\n"이 없고 앞에 0이 있습니까?

예를 들어 다음과 같은 출력이 있습니다 bc.

입력하다:

echo "scale=10; BLA-BLA-HERE-NOT-IMPORTANT" | bc

산출:

.3708446283953709207058828124021300754352578903651372655882743141882\
77124645102027246581819139527644919407424570060822470537797066353573\
96635.8038454068 days

두 가지 질문:

  • 출력을 "0.3708..."과 같은 값으로 반올림할 수 있습니까?
  • 끝에 "\n" -s를 제거할 수 있나요?

.NET에서 최대 너비 옵션을 찾을 수 없습니다 bc.

답변1

GNU 구현을 사용하면 백슬래시+줄바꿈 기능을 비활성화하거나 확장하는 bc환경 변수를 설정할 수 있습니다 . BC_LINE_LENGTH최신 버전에서는 다음과 같이 0 값을 사용하여 비활성화할 수 있습니다.

BC_LINE_LENGTH=0 bc <<<"2^4096"

이전 버전에는 "0 끄기" 기능이 없었으며 사용자에게 영향을 주지 않도록 값을 충분히 큰 값으로 설정해야 했습니다.

BC_LINE_LENGTH=10000 bc <<<"2^4096"

bc를 많이 사용하고 줄 바꿈을 좋아하지 않는 경우 셸에 설정하는 좋은 환경 변수처럼 보입니다. 를 사용하는 경우 bash다음을 다음 항목에 입력하세요 .bashrc.

export BC_LINE_LENGTH=0

답변2

다음과 같은 코드를 시도해 볼 수 있습니다.

echo "scale = 4;  3.5678/3" | bc | tr '\n' ' '

scale로 설정하면 bc반올림 작업이 수행됩니다. 나눗셈 부분을 원하는 명령어로 대체할 수 있습니다. 출력은 bc다시 로 파이프되어 tr개행 문자( \n)를 공백으로 변환합니다. 위 명령의 경우 다음과 같은 출력을 얻습니다.

1.1892 user@localhost:~/codes$

답변3

$ OUT=$(bc <<< "2 ^ 256")
$ echo "$OUT"
11579208923731619542357098500868790785326998466564056403945758400791\
3129639936

$ OUT=${OUT//$'\\\n'/}
$ echo "$OUT"
115792089237316195423570985008687907853269984665640564039457584007913129639936

답변4

그러니 그냥 스스로 대답할 수도 있겠지만, 모든 것을 합친 결과는 다음과 같습니다.

BC_LINE_LENGTH=10000 bc -l <<< "scale=200;1/3" | tr "\n" " "

예를 들어 에너지 소비량 계산

BC_LINE_LENGTH=10000 bc -l <<< "scale=2;`cat /sys/class/power_supply/BAT1/energy_now`/1000000"

관련 정보