Получить последний курс обмена с помощью командной строки?

Я ищу способ получить последний обменный курс онлайн с помощью командной строки. Я хочу использовать его с другой программой. До сих пор все, что у меня есть, это:

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?

3 ответа

Решение

Если вы можете найти сайт, который предоставляет форекс информацию в удобной для автоматизации форме, то вы можете отказаться от звонка sed в целом и просто использовать -O переключиться на wget, До этого команда, которую вы нашли, прекрасно работает с портами Windows wget и 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
    

Эта команда должна работать (почти) в любой UNIX или в Git Bash в Windows. Если у вас нет 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.

Поскольку 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);}'
Другие вопросы по тегам