리눅스: 가상화폐 가격 알아보기
2017.10.09 05:58

각 거래소의 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
코멘트 0
번호 | 제목 | 작성자 | 작성일 | 조회 |
---|---|---|---|---|
» |
리눅스: 가상화폐 가격 알아보기
![]() | 영진 | 10.09 | 4083 |
180 | 리눅스: xfce4 화면 확대하기 | 영진 | 09.29 | 3888 |
179 | USB Type-C: 극히 조심하세요. [7] | 사드사랑 | 07.20 | 5311 |
178 | 문리더 비슷한 iOS 용 텍스트 리더 [3] | matsal | 07.18 | 6591 |
177 | USB Type-C: 도깨비 방망이 ? [14] | 사드사랑 | 03.07 | 6081 |
176 |
리눅스: 데스크탑 노티피케이션 이용하기
[2]
![]() | 영진 | 06.24 | 7147 |
175 |
리눅스: xfce4터미널 폰트조정하기
[4]
![]() | 영진 | 06.18 | 7299 |
174 |
리눅스: vim을 이북리더로 쓰기
[2]
![]() | 영진 | 06.15 | 7160 |
173 |
리눅스: 온라인 사전을 사용하자
[1]
![]() | 영진 | 06.11 | 6900 |
172 |
리눅스: 뉴스를 터미널에서 보자
[2]
![]() | 영진 | 06.10 | 6787 |
171 |
리눅스: 대기오염지수 보기
[3]
![]() | 영진 | 06.08 | 6559 |
170 |
리눅스: 간편하게 날씨예보보기
[2]
![]() | 영진 | 06.06 | 6721 |
169 | T전화 : 기본앱 대신 플레이스토어 앱으로 쓰기 그리고 두개가 뭐가 다른가. [2] | 피델리티 | 06.02 | 7134 |
168 | 리눅스: GUI 바꾸기 [민트리눅스] [2] | 영진 | 05.29 | 6908 |
167 |
리눅스: bash스크립팅 - 화일이름 일괄 바꾸기
[2]
![]() | 영진 | 05.22 | 6634 |
166 |
안드로이드 태블릿 기본적인 이해 및 테스트 방법론 (제1강)
![]() | 星夜舞人 | 05.20 | 6648 |
165 |
리눅스: 언어벤치마크
[4]
![]() | 영진 | 05.05 | 6825 |
164 |
리눅스: bash스크립팅: 간단한 통계내기
![]() | 영진 | 03.31 | 6964 |
163 |
리눅스: vim: 설정하기
[1]
![]() | 영진 | 03.12 | 7251 |
162 |
리눅스: 생성일 기준으로 자동 파일 정리 스크립트 (초보)
[3]
![]() | 건설노무자 | 02.22 | 4715 |