我寻找一种使用命令行在线获取最新汇率的方法。我想将它与另一个程序一起使用。到目前为止,我只有这些:
wget -qO- "http://www.google.com/finance/converter?a=1&from=usd&to=inr&hl=es" | sed '/res/!d;s/<[^>]*>//g';
不是我的代码,是在网上找到的。
它会输出到控制台,但我需要将其保存在文件中或将调用该命令的其他程序中的变量中。我没有使用 wget 的经验,也找不到其他方法来实现我想要的效果。是否有任何程序(Windows 是首选,但 *nix 也可以接受)可以做到这一点,或者有没有使用 wget 的方法?
答案1
如果您能找到一个以自动化方式提供外汇信息的网站,那么您可以sed
完全放弃调用 ,而只需使用-O
开关wget
。在此之前,您找到的命令在 Windows 端口上可以正常工作获得和sed;您只需进行一些小调整。首先,您必须将调用中的单引号替换sed
为双引号,并删除尾随的分号。其次,您需要将最终输出重定向到文件或环境变量,而不是控制台。
对于控制台输出:
wget -qO- "google.com/finance/converter?a=1&from=usd&to=inr" | sed "/res/!d;s/<[^>]*>//g"
对于文件输出(根据需要调整文件名和路径):
wget -qO- "google.com/finance/converter?a=1&from=usd&to=inr" | sed "/res/!d;s/<[^>]*>//g" > forex_%date%.log
对于变量输出(根据需要调整变量名称):
for /f "delims=" %%i in ('wget -qO- "google.com/finance/converter?a=1&from=usd&to=inr" ^| sed "/res/!d;s/<[^>]*>//g"') do @set forex=%%i
答案2
该命令应该可以在(几乎)任何 UNIX 或 Windows 中的 Git Bash 中使用。如果您没有wget
,则可以改用curl
:
curl -L "http://www.google.com/finance/converter?a=1&from=usd&to=inr&hl=es" | sed '/res/!d;s/<[^>]*>//g'
您可以使用以下方式保存到文件:
the_cmd > rate.txt
或者变量为:
rate=$(the_cmd)
您可能希望抑制stderr
命令以减少噪音。您可以通过将其重定向到来实现这stderr
一点/dev/null
,如下所示:
curl -L "http://www.google.com/finance/converter?a=1&from=usd&to=inr&hl=es" 2>/dev/null | sed '/res/!d;s/<[^>]*>//g'
wget -qO- "http://www.google.com/finance/converter?a=1&from=usd&to=inr&hl=es" 2>/dev/null | sed '/res/!d;s/<[^>]*>//g'
不确定您是否还需要其他东西。我不知道有更好的工具可以做到这一点,无论是在 Windows 还是 *nix 上。
答案3
自从http://www.google.com/finance/converter 现在不起作用,请用 xe.com 替换它
以下命令将打印 EUR/USD 汇率。
curl -s "https://www.xe.com/currencyconverter/convert/\?Amount\=1\&From\=EUR\&To\=USD"|awk -F 'EUR / USD' '{printf substr($2,14,7);}'