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 的结果不可计算,因为它应该类似于字符串输出而不是整数。
我想知道的更高级的事情是如何计算2个curl结果的结果?
$ num=$(xidel -se '//div[@class="mark_val"]/span[1]/text()' 'https://url')
$ num=$((${num//,/}+1)) # num was 14050
$ echo $num
输出
14051
解释
$((...))
是算术代入。完成算术运算后,整个内容将替换为表达式的值。参见 http://mywiki.wooledge.org/ArithmeticExpression
命令替换:"$(cmd "foo bar")"
导致使用参数 'foo bar' 执行命令 'cmd',并且“$(..)”将被替换为 输出。参见 http://mywiki.wooledge.org/BashFAQ/002 and http://mywiki.wooledge.org/CommandSubstitution
奖金
您可以直接使用 xidel, thanks Reino using xquery 语法计算:
$ 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
'
所以,我这里有示例代码:
#!/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 的结果不可计算,因为它应该类似于字符串输出而不是整数。
我想知道的更高级的事情是如何计算2个curl结果的结果?
$ num=$(xidel -se '//div[@class="mark_val"]/span[1]/text()' 'https://url')
$ num=$((${num//,/}+1)) # num was 14050
$ echo $num
输出
14051
解释
$((...))
是算术代入。完成算术运算后,整个内容将替换为表达式的值。参见 http://mywiki.wooledge.org/ArithmeticExpression
命令替换:"$(cmd "foo bar")"
导致使用参数 'foo bar' 执行命令 'cmd',并且“$(..)”将被替换为 输出。参见 http://mywiki.wooledge.org/BashFAQ/002 and http://mywiki.wooledge.org/CommandSubstitution
奖金
您可以直接使用 xidel, thanks Reino using xquery 语法计算:
$ 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
'