簡體   English   中英

web 中的算術在 shell 中刮擦

[英]Arithmetic in web scraping in a shell

所以,我在這里有示例代碼:

#!/bin/bash
clear

curl -s  https://www.cnbcindonesia.com/market-data/currencies/IDR=/USD-IDR |
html2text |
sed -n '/USD\/IDR/,$p' |
sed -n '/Last updated/q;p' |
tail -n-1 |
head -c+6 && printf "\n"

exit 0

這應該打印出一些數字范圍 14000~15000

讓我們從最基本的開始,為了打印result + 1我必須做什么? 因此,如果打印輸出為 14000 並將其增加到 1 變為 14001。我認為 html2text 的結果是不可計算的,因為它應該類似於字符串 output 而不是 integer。

我想知道的更高級的是如何計算 2 個 curl 結果的結果?

我會做什么, +

$ num=$(xidel -se '//div[@class="mark_val"]/span[1]/text()' 'https://url')
$ num=$((${num//,/}+1)) # num was 14050
$ echo $num 

Output

14051

解釋

$((...))

是算術代換。 完成算術運算后,整個事情都被表達式的值所取代。 http://mywiki.wooledge.org/ArithmeticExpression

命令替換: "$(cmd "foo bar")"導致使用參數 'foo bar' 執行命令 'cmd' 並且 "$(..)" 將被output替換。 請參閱http://mywiki.wooledge.org/BashFAQ/002http://mywiki.wooledge.org/CommandSubstitution

獎金

您可以直接在中計算,感謝Reino使用語法:

$ xidel -s <url> e 'replace(//div[@class="mark_val"]/span[1],",","") + 1' 

並做 2 個值的加法運算:

$ xidel -s <url> -e '
    let $num:=replace(//div[@class="mark_val"]/span[1],",","")
    return $num + $num
'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM