Portál AbcLinuxu, 1. května 2025 08:45
Bojím sa nazvať to skriptom, no snáď sa nasledovných pár znakov niekomu bude hodiť. Jedná sa o vyhľadávanie zadaného slova v (nielen) anglicko-českom slovníku na serveri slovnik.sms.cz. Tento slovník používam veľmi často, no otvárať kvôli prekladu jednoho--dvoch slov novú záložku v prehliadači sa mi zunovalo, takže si radšej v konzolovom okne zavolám skript tran.sh
a výsledok mám hneď.
#!/bin/bash # tran.sh # skript na vyhladanie anglickeho slova v slovniku (slovnik.sms.cz) # jose1711 <@t> gmail <dot> com # # verzia 0.4.1, 20-02-2008 # # historia: # 0.1 (29-01-2006) # - prvy release # # 0.1.1 (29-01-2006) # - spravne lamanie riadkov (pri vyskyte hladaneho slova v strede/na konci fraze) # - filtrovanie slova "nasledujici" # # 0.2 (05-08-2007) # - kra[jt]si kod # - iconv namiesto cstocs # # 0.3 (12-08-2007) # - zmena syntaxe (jazykovy_kod fraza) - umoznuje lahke prepinanie medzi cudzojazycno-ceskym slovnikom # - kontrola syntaxe # - fix: nehladiet na velkost pismen pri vyhladavani # # 0.4 (13-08-2007) # - fix: mala oprava, ked sa niekedy dve definicie zobrazili na jednom riadku # - default_lang - moznost nastavit vychodzi kod jazyka # - bez parametrov vypise napovedu # # 0.4.1 (20-02-2008) # - fix: upravene, aby fungoval po zmene webu slovnik.sms.cz # # 0.4.2 (05-06-2008) # - pridana vyslovnost (zavisi na prehravaci mplayer) # # pouzitie: # ./tran.sh kod_jazyka slovo/fraza # napr. ./tran.sh de lehrer # # default_lang je kod jazyka, ktory bude pouzity ako vychodzia volba (ak ho uzivatel nespecifikuje) default_lang=en [ $# -eq 0 ] && { echo "Tran.sh script - searches slovnik.sms.cz for foreign words <jose1711 gmail com> Usage: ${0##*/} [en|de|fr|es|it|ru] word If no language code is specified, the default one specified by the default_lang variable inside the script is used. "; exit 0; } if [ $# -eq 1 ]; then lang=$default_lang else lang="$1" shift fi [ $(echo "$lang" | grep "^en$\|^de$\|^fr$\|^es$\|^it$\|^ru$") ] || { echo "Unrecognized language code (en, de, fr, es, it, ru)"; exit 1; } phrase="$@" wget "http://slovniky.sms.cz/index.php?P_id_kategorie=65456&P_soubor=%2Fslovniky%2Findex.php%3Fword%3D${phrase}%26bjvolba%3D${lang}_cz%26send_data%3D1" 2>/dev/null --output-document=- | grep -i "$phrase" | sed -ne "s/<td\( class='oddel'\)\?>/\\n/g" -e "s/<[^>]*>//g" -e "s/&[^;]*;//gp" | iconv -f cp1250 -t latin2 mplayer "http://slovniky.sms.cz/kategorie/slovniky/$(wget "http://slovniky.sms.cz/index.php?P_id_kategorie=65456&P_soubor=%2Fslovniky%2Findex.php%3Fword%3D${phrase}%26bjvolba%3D${lang}_cz%26send_data%3D1" 2>/dev/null --output-document=- | grep -i "$phrase" | sed -ne "s/.*<A href='\([^>]*\)'>.*/\1/p")" &>/dev/nullUrčite si všimnete, že blbuvzdorné to zrovna nie je, ale použiteľnosť je rozumná. Oprava (29. 1. 2006): správne lámanie riadkov (pri výskyte hľadaného slova v strede/na konci fráze), odstránenie slova "následující"
Tiskni
Sdílej:
grep -m 5 --color=always -E "^$1" ${0%/*}/slovnik_data_utf8.txt\
|grep -v "^#" | cut -f1,2
curl
místo wget
? #! /bin/bash wget "http://slovnik.sms.cz/?word=$@&bjvolba=en_cz" 2>/dev/null \ -O - | grep "$@" | sed -e "s/<[^>]*>//g" -e \ "s/&[^;]*;//g" -e "s/$@/\n$@/g" | enca -x utf8 | lessDíky za skript, bude se mi to hodit
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.