Portál AbcLinuxu, 20. listopadu 2025 19:13
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/null
Urč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?
Jinak souhlasím s Jindřichem Plešingerem -- slovnik.zcu.cz
#! /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.