리눅스: 가상화폐 가격 알아보기
2017.10.09 05:58
![coin_price_capt.png](http://www.kpug.kr/files/attach/images/788/855/318/002/508d928a321165a3873787c7a5d4b559.png)
각 거래소의 api를 이용하지 않고 coinmarketcap.com웹을 정리해주는 배시 스크립트입니다
빠르게 가격확인을 해보려고 만들었네요
다음을 ~/bin에 coin이라는 이름으로 넣으시고 chmod +x ./coin 으로 실행권한 주시고 쓰시면 됩니다.
인자는 종목코드를 넣어도 되고 이름의 일부만 넣어도 되게 했습니다.
인자를 주지 않으면 상위 100개의 가상화폐 가격이 표시됩니다
watch -n 30 coin btc ethereum
이런식으로 비트코인과 이더리움의 시세가 업데이트되게 할 수도 있습니다.
-------------8<--------------8<--------------8<--------------8<--------------8<--------------8<--------------
#!/bin/bash
# usage: coin [btc eth etc...]
contents=$(w3m -dump coinmarketcap.com)
total=100
regex='^([0-9]+) +' # 1.rank
regex+='([A-Z]+)+ +' # 2.coin
regex+='([^$]+) +' # 3.name
regex+='(\$[0-9,]+) +' # 4. market cap
regex+='(\$[0-9,.]+) +' # 5. price
regex+='(\$[0-9,]+) +' # 6. volume
regex+='([0-9,.]+) +' # 7.circulating supply
regex+='([A-Z]*) +' # 8.optional unit
regex+='([-0-9,.]+%)' # 9.change
i=0
while read -r line
do
if [[ $line =~ $regex ]]; then
rank="${BASH_REMATCH[1]}"
coin="${BASH_REMATCH[2]}"
name="${BASH_REMATCH[3]}"
mcap="${BASH_REMATCH[4]}"
price="${BASH_REMATCH[5]}"
vol="${BASH_REMATCH[6]}"
change="${BASH_REMATCH[9]}"
# Filter the results if parameters are given.
if [ $# -gt 0 ]; then
found=0
for c in "$@"; do
c=$(echo "$c" | tr [a-z] [A-Z])
n=$(echo "$name" | tr [a-z] [A-Z])
if [[ "$c" == "$coin" || "$n" =~ .*"$c".* ]]; then
found=1
fi
done
if [ $found -eq 0 ]; then
continue
fi
fi
ranks[$i]=$rank
coins[$i]=$coin
names[$i]=$name
mcaps[$i]=$mcap
prices[$i]=$price
vols[$i]=$vol
changes[$i]=$change
if [ $coin == "BTC" ]; then
btc_mcap=$mcap
fi
i=$((i+1))
fi
if [ $i -eq $total ]; then
break
fi
done <<< "$(echo -e "$contents")"
# Print in a form
printf "%-3s | %+20s | %+9s | %+13s | %+12s | %+7s\n" \
"RNK" "NAME & SYMBOL" "PRICE" "Market Cap" "VOLUME(24h)" "CHNG(24h)"
echo "---------------------------------------------------------------------------------"
for (( i=0; i<${#ranks[@]}; i++ )); do
names[$i]=$(echo ${names[$i]} | sed 's/ $//') # remove trailing spaces
mcaps[$i]=$(echo ${mcaps[$i]} | sed 's/,[0-9]\+$/k/g') # shorten numbers
vols[$i]=$(echo ${vols[$i]} | sed 's/,[0-9]\+$/k/g')
printf "%-3s | %+20s | %+9s | %+13s | %+12s | %+7s\n" \
"${ranks[$i]}" "${names[$i]} ${coins[$i]}" "${prices[$i]}" \
"${mcaps[$i]}" "${vols[$i]}" "${changes[$i]}"
done