이더리움 가격을 얻고 응답 형식을 지정하는 간단한 스크립트를 작성해보세요.
내가 시도한 것은 다음과 같습니다.
#!/bin/bash
response=$(curl 'https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=GBP')
price=$(echo $response | grep -o -P '(?<=:).*(?=})')
formattedPrice=$(echo "${price%.*}" | sed 's/\([[:digit:]]\{3\}\)\([[:digit:]]\{3\}\)\([[:digit:]]\{3\}\)/\1,\2,\3/g')
echo "£$formattedPrice"
쉼표를 추가하지는 않지만.
답변1
숫자 형식을 지정하는 대신 sed
다음을 사용하는 것이 좋습니다 printf
.
$ price=1254.43
$ printf "%'.2f\n" $price
1,254.43
또는 소수 부분이 필요하지 않은 경우:
$ printf "%'d\n" ${price%.*}
1,254
답변2
jq
반환된 JSON 문서에서 숫자를 추출하는 데 사용하고 curl
, 상응하는 출력 필터 가 없으므로 GNU 를 사용하여 awk
로케일에 따라 숫자 형식을 지정합니다 .en_GB.UTF-8
jq
printf
curl -s 'https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=GBP' |
jq -r '.GBP' |
LC_ALL=en_GB.UTF-8 gawk '{ printf "£%'\''.2f\n", $1 }'
printf
작은따옴표로 묶인 문자열의 아포스트로피에는 특별한 처리가 필요하므로 형식 문자열은 £%'.2f
여기서 약간 분리되어 천 자리를 쉼표로 구분하여 값의 정수 부분 형식을 지정합니다(주어진 로캘에서). 또한 값 앞에 파운드 기호(£)를 추가하고 값이 소수점 이하 두 자리까지 보고되도록 합니다.
출력 예:
£1,262.08