수동 서식 지정 기능을 갖춘 로캘 독립적인 솔루션

수동 서식 지정 기능을 갖춘 로캘 독립적인 솔루션

누구든지 awk 명령을 사용하여 "숫자는 세 자리마다 쉼표를 포함합니다. 예를 들어 100000000은 100,000,000이 됩니다"라는 명령문을 실행하는 방법을 알려줄 수 있습니까?

이 출력을 얻기 위해 sed 명령을 사용하는 방법을 알고 있지만 awk를 사용하는 방법을 모릅니다. 저는 초보자입니다. 아침부터 검색을 시작했지만 적절한 답변을 얻지 못했다고 말해주세요. 최고의 튜토리얼을 제안해주세요. 배우다 .

sed 명령은 위의 출력을 얻습니다.

echo "100000000" | sed -E 's/([0-9]{3})/,\1/2g'

답변1

수동 서식 지정 기능을 갖춘 로캘 독립적인 솔루션

이는 설치된 로케일에 관계없이 모든 POSIX 호환 운영 체제에서 작동합니다.

$ printf "1\n10\n100\n1000\n10000\n100000\n1000000\n10000000\n100000000\n" \
| awk '{ len=length($0); res=""; for (i=0;i<=len;i++) { res=substr($0,len-i+1,1) res; if (i > 0 && i < len && i % 3 == 0) { res = "," res } }; print res }'
1
10
100
1,000
10,000
100,000
1,000,000
10,000,000
100,000,000

printfen_US 로캘을 사용하는 솔루션입니다.

printf시퀀스는 %'d현재 로케일에 대해 천 단위 구분 기호를 사용하여 형식화된 10진수를 인쇄합니다.

$ printf "1\n10\n100\n1000\n10000\n100000\n1000000\n10000000\n100000000\n" \
| LC_ALL=en_US.UTF-8 awk '{ printf("%'"'"'d\n", $0) }'
1
10
100
1,000
10,000
100,000
1,000,000
10,000,000
100,000,000

답변2

gawk 'END {
        printf("%-20s %\47 10i \n",  "Number of records: ", NR)
        printf("%-20s %\47 10.2f \n",  "Number of records: ", NR)
    }' /var/log/kern.log

Number of records:        2,818
Number of records:     2,818.00 `

답변3

또 다른 해결책은numfmt(Debian의 일부이며 coreutils기본적으로 Debian에 포함되어 있습니다)

$ printf "1\n10\n100\n1000\n10000\n100000\n1000000\n10000000\n100000000\n" \
| LC_ALL=en_US.UTF-8 numfmt --padding=12 --grouping
           1
          10
         100
       1,000
      10,000
     100,000
   1,000,000
  10,000,000
 100,000,000
$ printf "1\n10\n100\n1000\n10000\n100000\n1000000\n10000000\n100000000\n" \
| LC_ALL=en_US.UTF-8 numfmt --grouping
1
10
100
1,000
10,000
100,000
1,000,000
10,000,000
100,000,000

%'f다음을 사용하여 값의 형식을 직접 지정할 수도 있습니다.--grouping

$ printf "1\n10\n100\n1000\n10000\n100000\n1000000\n10000000\n100000000\n" \
| LC_ALL=en_US.UTF-8 numfmt --format "%'f"
$ printf "1\n10\n100\n1000\n10000\n100000\n1000000\n10000000\n100000000\n" \
| LC_ALL=en_US.UTF-8 numfmt --format "%'12f"

관련 정보