V souvislosti s tim, co jsem resil v tématu
Import dat z internetu do vypoctu v LibreOffice Calc [VYRESENO] jsem se pustil do sepsani takoveho maleho skriptu. Jeho cilem je, abych pri kazdem otevreni urcite tabulky v Calcu obdrzel aktualizovane menove kurzy - viz zminene tema.
Vytvoril jsem si skript, ktery zatim zni (nektere nepouzivane nebo zatim nepouzivane radky jsem pouze zakomentoval, ale nesmazal):
#!/bin/bash
soubor="ExchangeRate"
datum=`date +'%m/%d/%y'`
# Vrati dnesni datum ve formatu MM/DD/YY
#mkdir "`date +'%Y-%m-%d'`"
# Vytvori slozku pojmenovanou dnesnim datem ve formatu YYYY-MM-DD
#echo "Folder `date +'%Y-%m-%d'` has been created"
cd /home/`whoami`/ ; mkdir "FOREX"; cd FOREX/
# Vytvori slozku FOREX pro aktualniho uzivatele v jeho domovskem adresari
touch "$soubor"
# Vytvori soubor pojmenovany podle promenne $soubor a cislem pred uvozovkami
echo "File $soubor has been created..."
wget -O "$soubor" "http://www.oanda.com/currency/table?date=$datum&date_fmt=normal&exch=EUR&sel_list=AMD_ARS_AUD_AZN_BGN_BRL_CAD_CHF_CLP_CNY_CZK_DKK_EUR_GBP_GEL_HKD_HRK_HUF_INR_IQD_ISK_JPY_KGS_KRW_KZT_LTL_LVL_MAD_MDL_MKD_MNT_MXN_MYR_NOK_NZD_PEN_PHP_PKR_PLN_PYG_RON_RSD_RUB_SEK_SGD_THB_TJS_TMT_TRY_UAH_USD_UYU_UZS_ZAR&value=1&format=CSV&redirected=1"
# Zapise obsah odkazu do souboru "$soubor" ve slozce FOREX
sleep 1
echo "Running data editor..."
sed -i '294,$d' "$soubor"
# Odstrani radky od 294 do konce ze souboru "$soubor"
sed -i '1,236d' "$soubor"
# Odstrani radky 1 az 236 ze souboru "$soubor"
sed -i '/./!d' "$soubor"
# Odstrani vsechny prazdne radky v souboru "$soubor"
#sed -i 's/,/;/g' "$soubor"
# Vymeni carky za stredniky
echo "Program will close in 2 seconds..."
sleep 2
exit 0
Po spusteni skriptu vsechno probehne normalne a ja obdrzim nasledujici vystup:
<FONT face=Verdana SIZE=2><B> Base Currency: Euro, EUR</B></FONT> on Friday, November 15, 2013 <BR><BR><TABLE BORDER=0 CELLPADDING=1 WIDTH=470> <TR BGCOLOR=#000000>
<TR><TD BGCOLOR=#efefef><PRE><font face=Verdana size=2>Currency,Code,EUR/1 Unit,Units/1 EUR
Armenian Dram,AMD,0.001831,546.458
Argentine Peso,ARS,<span>0.1243</span>,8<span>.</span>0552
Australian Dollar,AUD,0.6931,1.4431
Azerbaijan New Manat,AZN,0<!-- 0.33 -->.9476,1.0567
Bulgarian Lev,BGN,0.5114,1.9563
Brazilian Real,BRL,0.<!-- 0.99 -->3195,3<nobr>.</nobr>1382
Canadian Dollar,CAD,0.709,1<!-- 1.46 -->.4108
Swiss Franc,CHF,0.8113,1.2329
Chilean Peso,CLP,<span>0.00143</span>,<span>700<span>.</span>435</span>
Chinese Yuan Renminbi,CNY,0.1212,<span>8.2553</span>
Czech Koruna,CZK,<!-- 1.73 -->0.03691<!-- 7.31 -->,27.<!-- 0.33 -->1345
Danish Krone,DKK,0.1341,7.4591
Euro,EUR,1,1
British Pound,GBP,1.192,0.8391
Georgian Lari,GEL,0.4431,2.257
Hong Kong Dollar,HKD,0.09582,10.4392
Croatian Kuna,HRK,0.1312,<span>7.<!-- 0.03 -->6301</span>
Hungarian Forint,HUF,<span>0<span>.</span>003355</span>,298.585
Indian Rupee,INR,0.01177,<span>85<span>.</span>1665</span>
Iraqi Dinar,IQD,<span>0.0006396</span>,1572.75
Iceland Krona,ISK,<span>0.006089</span>,165.597
Japanese Yen,JPY,0<span></span>.007449,<!-- 0.38 -->134.271<!-- 3.80 -->
Kyrgyzstanian Som,KGS,0.01532,65.3477
South-Korean Won,KRW,0.000696,1439.91
Kazakhstan Tenge,KZT,0.004939,208<span>.</span>482
Lithuanian Litas,LTL,<!-- 0.13 -->0.2897<!-- 1.30 -->,3.<nobr></nobr>4536
Latvian Lats,LVL,1.4236,0.7033
Moroccan Dirham,MAD,0.08964,11.2336
Moldovan Leu,MDL,0.05869,17<span></span>.6411
Macedonian Denar,MKD,0<!-- 0.28 -->.01635,62.0755
Mongolian Tugrik,MNT,0.0004453,2252.39
Mexican Peso,MXN,0.05703,17.5492
Malaysian Ringgit,MYR,0.2322,4.3148
Norwegian Kroner,NOK,0.1203,8.<span></span>3188
New Zealand Dollar,NZD,0.615,1.6268
Peruvian Nuevo Sol,PEN,0.2704,3<nobr>.</nobr>812
Philippine Peso,PHP,0.01706,58.7526
Pakistan Rupee,PKR,0<!-- 1.13 -->.006937,<!-- 0.98 -->145.126<!-- 9.80 -->
Polish Zloty,PLN,0.2386,4.1961
Paraguay Guarani,PYG,0.0001721,6071.39
Romanian New Lei,RON,0.2246,4.4612
Serbian Dinar,RSD,0.008817,114.588
Russian Rouble,RUB,0<!-- 1.67 -->.02272,<span>44.069</span>
Swedish Krona,SEK,0.1116,8.9655
Singapore Dollar,SGD,<span>0.5958</span>,1<nobr>.</nobr>6792
Thai Baht,THB,0.02359,42.5387
Tajikistani Somoni,TJS,0.1557,6.4233
Turkmenistan New Manat,TMT,0.2606,3.837
Turkish Lira,TRY,0.364,2.7499
Ukraine Hryvnia,UAH,0.0921,11.1389
US Dollar,USD,0.<span></span>7428,<span>1.3463</span>
Uruguayan Peso,UYU,0.03547,29.3972
Uzbekistan Som,UZS,0.<!-- 0.35 -->0003428,2930.<!-- 1.63 -->94
South African Rand,ZAR,0.07228,<!-- 1.64 -->13.8504<!-- 6.41 -->
A tim se dostavame k jadru pudla - potrebuji dat
sedu prikaz, aby smazal vsechno mezi znaky
< a
> na kazde radce, a to i v pripade vice vyskytu. Zkousel jsem variace na tetnto
priklad:
MAZÁNÍ VYBRANÝCH ŘÁDEK:
# vypíše vše AŽ na oblast mezi "Iowa" a "Montana"
sed '/Iowa/,/Montana/d'
ve formatu
sed -i 's/</,/>/dg' $soubor
bohuzel ale bez uspechu... Dostanu vystup
vs@VirtualBox ~ $ sed -i 's/</,/>/dg' /home/vs/FOREX/ExchangeRate
sed: -e expression #1, char 7: unknown option to `s'
Nemel by pro me nekdo radu? Predem diky!
EDIT: Tak problem s tim prikazem jsem vyresil - to s bylo navic, kod mel byt:
sed -i '/</,/>/d' $soubor
Bohuzel, ackoliv to funguje, vystup je neuspokojivy, smaze to mnohem vic, nez by melo.
Takze to obchazim postupnou aplikaci
sed -i 's/<span>//g'
sed -i 's/<\/span>//g'
sed -i 's/<nobr>//g'
sed -i 's/<\/nobr>//g'
Nicmene, potreboval bych jeste zjistit,
jaky zastupny znak pouzit pro libovolne cislo?