$ curl -s "http://www.cbr.ru/scripts/XML_daily.asp" | enconv -x UTF-8 | xq -r '.ValCurs.Valute[] | select(.CharCode == "USD" or .CharCode == "EUR") |.CharCode + " " + .Value'
USD 74,7087
EUR 79,5716
curl -s "http://www.cbr.ru/scripts/XML_daily.asp" | enconv -x UTF-8 | xq -r '.ValCurs.Valute[] | .CharCode + " " + .Nominal + " " + .Value' | sort | awk 'BEGIN{print "Code Nominal Value"}{print}' | csview -d' '
┌──────┬─────────┬─────────┐
│ Code │ Nominal │ Value │
├──────┼─────────┼─────────┤
│ AED │ 1 │ 20,3400 │
│ AMD │ 100 │ 19,1325 │
│ AUD │ 1 │ 51,0933 │
│ AZN │ 1 │ 43,9463 │
│ BGN │ 1 │ 40,7332 │
│ BRL │ 1 │ 14,3646 │
│ BYN │ 1 │ 26,6998 │
│ CAD │ 1 │ 55,2743 │
│ CHF │ 1 │ 80,5485 │
│ CNY │ 1 │ 10,8398 │
│ CZK │ 10 │ 33,5739 │
│ DKK │ 1 │ 10,7002 │
│ EGP │ 10 │ 24,4263 │
│ EUR │ 1 │ 79,5716 │
│ GBP │ 1 │ 90,6889 │
│ GEL │ 1 │ 28,3363 │
│ HKD │ 10 │ 95,3890 │
│ HUF │ 100 │ 20,7001 │
│ IDR │ 10000 │ 49,2185 │
│ INR │ 100 │ 90,1603 │
│ JPY │ 100 │ 55,4219 │
│ KGS │ 100 │ 85,4595 │
│ KRW │ 1000 │ 57,2524 │
│ KZT │ 100 │ 16,7640 │
│ MDL │ 10 │ 39,8181 │
│ NOK │ 10 │ 72,3823 │
│ NZD │ 1 │ 46,5734 │
│ PLN │ 1 │ 16,7565 │
│ QAR │ 1 │ 20,5244 │
│ RON │ 1 │ 16,1333 │
│ RSD │ 100 │ 67,8622 │
│ SEK │ 10 │ 72,2507 │
│ SGD │ 1 │ 55,7819 │
│ THB │ 10 │ 21,5775 │
│ TJS │ 10 │ 69,2908 │
│ TMT │ 1 │ 21,3453 │
│ TRY │ 10 │ 39,6051 │
│ UAH │ 10 │ 20,2313 │
│ USD │ 1 │ 74,7087 │
│ UZS │ 10000 │ 66,0995 │
│ VND │ 10000 │ 31,6013 │
│ XDR │ 1 │ 99,6569 │
│ ZAR │ 10 │ 40,6808 │
└──────┴─────────┴─────────┘
$ curl -s "http://www.cbr.ru/scripts/XML_daily.asp" | enconv -x UTF-8 | xq -r '.ValCurs.Valute[] | select(.CharCode == "USD" or .CharCode == "EUR") |.CharCode + " " + .Nominal + " " + .Value' | awk 'BEGIN{print "Code Nominal Value"}{print}' | csview -d' '
┌──────┬─────────┬─────────┐
│ Code │ Nominal │ Value │
├──────┼─────────┼─────────┤
│ EUR │ 1 │ 79,5716 │
│ USD │ 1 │ 74,7087 │
└──────┴─────────┴─────────┘
curl -s https://www.cbr.ru/scripts/XML_daily.asp | awk -F '</Valute>' '{for (i=1; i<=NF; i++) if($i ~ /USD|EUR/) print substr($i, index($i, "CharCode")+9,3)" "substr($i, index($i, "Value")+6,7)}' 2>/dev/null
wget -qO- https://www.cbr.ru/scripts/XML_daily.asp | awk -F '</Valute>' '{for (i=1; i<=NF; i++) if($i ~ /USD|EUR/) print substr($i, index($i, "CharCode")+9,3)" "substr($i, index($i, "Value")+6,7)}' 2>/dev/null
perl -MLWP::Simple -e '$_=get("https://www.cbr.ru/scripts/XML_daily.asp");while(m/(USD|EUR).+?Value>([^<]+)/g){print "$1 $2\n"}'
python3 -c 'import requests,re;print("\n".join([" ".join(i.groups()) for i in list(re.finditer(r"(USD|EUR).+?Value>([^<]+)", requests.get("https://www.cbr.ru/scripts/XML_daily.asp").text))]))'
# вариант 1 (RegEx)
(Invoke-WebRequest -UseBasicParsing -URI 'https://www.cbr.ru/scripts/XML_daily.asp').Content | Select-String '(USD|EUR).+?Value>([^<]+)' -AllMatches | foreach {$_.Matches.Groups[1,2,4,5].Value}
# вариант 2 (XML/XPath)
([xml](Invoke-WebRequest -UseBasicParsing -URI 'https://www.cbr.ru/scripts/XML_daily.asp').Content).SelectNodes('//Valute[CharCode="USD" or CharCode="EUR"]') | ft Name,Value
node -e "https.get('https://www.cbr.ru/scripts/XML_daily.asp',r=>{s='';r.on('data',d=>s+=d);r.on('end',()=>[...s.matchAll(/(USD|EUR).+?Value>([^<]+)/g)].forEach(e=>console.log(`${e[1]} ${e[2]}`)))})"