イーサリアムの価格を取得し、応答形式を指定する簡単なスクリプトを書いてください。
私が試したことは次のとおりです。
#!/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
ここで少し区切られ、1000桁をカンマで区切って値の整数部分書式を指定します(指定されたロケールで)。また、値の前にポンド記号(£)を追加し、値が小数点以下の2桁まで報告されるようにします。
出力例:
£1,262.08