저는 비트코인 가격을 끌어올리기 위한 짧은 스크립트를 작성하고 있습니다. 이 정보는 i3block으로 전달되어 상태 표시줄에서 시간당 가격을 볼 수 있습니다. 이것이 지금까지 제가 가지고 있는 정보입니다.
#!/bin/bash
price=$(curl -s gbp.rate.sx/btc?T | tail -3 | head -1 | grep -o '[0-9]*' | cut -d ' ' -f1)
echo $price
비트코인 가격을 GBP로 계산했습니다.rate.sxT 옵션(텍스트만, ANSI 시퀀스 없음)을 사용하여 Head 및 Tail을 사용하여 평균 가격 라인을 선택하고 숫자를 파악합니다. 출력은 다음과 같습니다.
26563 26396 1738 8 6 29
첫 번째 숫자는 평균 가격이고 다른 숫자는 중앙값, 변형 등입니다. 보시다시피 공백을 구분 기호로 사용하여 클리핑을 통해 전달하고 있지만 출력이 클리핑되지 않습니다.
또한 출력을 csv로 변환하려고 공백을 ","로 바꾸려고 시도했지만 실패했습니다.
price=$(curl -s gbp.rate.sx/btc?T | tail -3 | head -1 | grep -o '[0-9]*' | sed 's/ /,/' )
위의 내용도 동일한 결과를 제공합니다. 공백을 식별하는 데 cut
어려움을 겪는 이유는 무엇입니까 sed
?
답변1
자신의 파이프라인에서 발생하는 문제는 출력이 grep
여러 개 라는 사실을 인식하지 못한다는 것입니다.철사길이는 한 줄에 하나의 정수입니다. 숫자는 $price
따옴표 없이 사용했기 때문에 같은 줄에만 출력됩니다 .
평균 가격, 즉 라벨 뒤의 금액을 원하는 경우 avg:
가장 간단한 방법은 다음과 같습니다 awk
.
curl -s 'https://gbp.rate.sx/btc?T' |
awk '/^avg:/ { print $2 }'
위의 코드 awk
는 text 로 시작하는 각 줄의 두 번째 공백으로 구분된 필드를 인쇄합니다 avg:
.
이것 은 당신 에게 이와 같은 것을 줄 것입 니다 £26421
. 파운드 기호 없이 금액을 원하면 print substr($2,2)
대신 을 사용하세요 print $2
.
grep
and cut
와 다음과 같은 것을 사용하여 이 작업을 수행하시겠습니까?
curl -s 'https://gbp.rate.sx/btc?T' |
grep '^avg:' | cut -d ' ' -f 2
파운드 기호를 제거하려면 파이프로 연결하거나 cut -c 2-
끝에 tr -d '£'
넣으세요.
단지 결과를 출력하는 것이라면 애초에 결과를 변수에 넣을 이유가 없다는 점에 유의하세요.
답변2
출력은 다음과 같습니다.
echo $price 26563 26396 1738 8 6 29
$price
이는 인용되지 않았기 때문에 쉘이 공백으로 분할하기 때문 입니다 . echo
여러 매개변수를 가져와 단일 공백으로 연결합니다.
예를 들면 다음을 참조하세요.언제 큰따옴표가 필요합니까?