Awk (mawk) 소수점 이하 숫자를 0으로 만듭니다.

Awk (mawk) 소수점 이하 숫자를 0으로 만듭니다.

Ubuntu 20.04의 awk( 1.3.4.20200120-2) 버그처럼 보입니다 . mawk를 사용하여 필요한 소수 자릿수를 표시할 수 있지만 printf (%.*n*f)다음 예에서 볼 수 있듯이 암시적인 "바닥"이 관련된 것처럼 소수는 항상 0으로 반올림됩니다.

  • 예시 1:

    $ echo "2.3 4.99789" | awk '{printf "%.2f %.2f\n", $1, $2}'
    2,00 4,00
    
  • 예 2:

    $ cat testf
    1.23
    3.65
    5.76
    
    $awk '{ SUM += $1} END { printf "%.2f\n",  SUM }' testf
    9,00
    

답변1

이것은 문제가 되지 않았습니다 ( 예를 들어 를 사용할 때 bash에서는 awk나타나지 않았지만 에서 나타남 ). 단순한 로캘 구성 오류/설정이었습니다.awkbc

동유럽 로케일은 . ,대신 소수 구분 기호로 를 사용합니다 .. 내 로케일은 미국 설정과 SK 설정이 혼합되어 있었습니다.

해결책:

확인: cat /etc/default/locale또는 locale명령을 사용하여 LC_NUMERIC.

예:LC_NUMERIC="sk_SK.UTF-8"

수정하다:

  • 로컬로 .bashrc.

  • 또는 다음을 사용하여 시스템 전체에 적용:

    sudo update-locale LC_NUMERIC="en_US.UTF-8
    

    그러면 올바르게 업데이트됩니다 /etc/default/locale.

관련 정보