![텍스트 파일에서 숫자를 추출하여 다른 파일에 넣습니다.](https://linux55.com/image/68414/%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EC%88%AB%EC%9E%90%EB%A5%BC%20%EC%B6%94%EC%B6%9C%ED%95%98%EC%97%AC%20%EB%8B%A4%EB%A5%B8%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EB%84%A3%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
내용이 다음과 같은 텍스트 파일이 있습니다.
{"result":"true","last":0.02094,"high":0.0213,"low":0.01682,"avg":0.01871,"sell":0.02094,"buy":0.02054,"vol_ltc":5145.8262,"vol_btc":96.29887,"rate_change_percentage":"23.47"}`
(API에서 제공되는 데이터입니다)
프로그램에서 읽을 수 있도록 형식을 지정하고 싶지만 API의 교환 형식 중 일부가 다르기 때문에 숫자를 추출해야 합니다. 예를 들면 다음과 같습니다.
{"result":"true","last":"0.00000070","high":"0.00000073","low":"0.00000069","avg":"0.00000071","sell":"0.00000071","buy":"0.00000069","vol_doge":71072621.657,"vol_btc":50.64272,"rate_change_percentage":"0.00"}
(차이점: 가격 가치에 대한 인용문)
다음과 같은 것이 필요합니다: (
첫 번째 것을 사용하세요)
0.02094
0.0213
0.01682
0.01871
0.02094
0.02054
5145.8262
96.29887
23.47
아니면 이렇게(첫 번째 것을 다시 사용)
last
0.02094
high
0.0213
low
0.01682
avg
0.01871
sell
0.02094
buy
0.02054
vol_ltc
5145.8262
vol_btc
96.29887
rate_change_percentage
23.47
API에서 제공하는 문자열 예제가 더 필요하면 다음을 방문하세요.http://data.bter.com/api#tickers
답변1
API는 JSON 객체를 반환하므로 sed 및 grep과 결합된 JSON 파서를 사용하겠습니다.
나는 결정했다잭, Ubuntu 리포지토리에 포함되어 있으므로 작동합니다 sudo apt-get install jq
. 설치하려면 어떤 배포판을 사용하고 있는지 모르므로 이 솔루션을 사용하려면 직접 찾아야 합니다.
jq ".[]" <filename> | sed s/\"//g | grep -P '^\d+(\.\d+)$'
이제 분석해 보겠습니다.
jq ".[]" <filename>
지도의 각 키 값을 인쇄합니다. 하지만 중첩된 지도에서는 작동하지 않을 수 있습니다.sed s/\"//g
목록의 모든 따옴표가 제거됩니다.grep -P '^\d+(\.\d+)?$'
정수 또는 소수만 포함된 행을 반환합니다.
이 명령 체인은 결과를 표준 출력으로 인쇄합니다. 파일에 넣으려면 출력을 파일에 파이프하면 됩니다.
jq ".[]" <filename> | sed s/\"//g | grep -P '^\d+(\.\d+)$' > <other_filename>
답변2
이것은 펄 라인입니다:
perl -pe 's/.*?(\d+\.\d+)/$1 . "\n"/eg' file1 > file2