Portál AbcLinuxu, 30. dubna 2025 21:24
Jedná se o velmi primitivní ukázku toho, jak jsem se pokusil napsat "program" (shellový skript) pro vyhledávání překladu anglického slovíčka ve GNU/FDL anglicko-českém slovníku, tedy v jeho "stažené offline verzi" ve formě prostého textového souboru v UTF-8. Přičemž tento můj "program" bere anglická slova k přeložení ze schránky X. Používám tyto programy: grep, dialog, xclip a gawk. Pokud tyto programy nemáte, tak si je musíte doinstalovat.
Vytvoříme gawk zdrojový soubor pojmenovaný "precti_dve_slova.awk", absolutní cesta k souboru bude /cesta/precti_dve_slova.awk
. Bude mít následující obsah:
{ ## Výstupem tohoto gawk zdrojového souboru je jedno nebo dvě slova (po sobě jdoucí). ## (počítáno od začátku řádku (record)). ## Bereme na vědomí pouze první record (řádku)! # Všimněte si, že chybí specifikace /regulární výraz/ # Tím že to chybí, znamená, že budeme zprácovávat libovolné (všechny) řádky. # NR znamená de facto číslo řádku (R = record), NF (F = field) číslo de facto obsahuje počet slov na řádce if ((NR == 1) && (NF == 1)) { printf("%s", $1) exit } # s = string (řetězec), printf je funkce pro formátovaný výstup if ((NR == 1) && (NF >= 2)) { printf("%s %s", $1, $2) exit } }
#!/bin/bash # Tento skript se bude jmenovat třeba slovnik.sh # Slouží k překladu anglického slovíčka, které je obsahem schránky X. # Proměnná anj_slovnik je absolutní cesta k offline verzi GNU/FDL anglicko-českého # slovníku. Viz http://slovnik.zcu.cz/ anj_slovnik="/cesta_ke_slovniku/slovnik_data_utf8.txt" # "while true": nekonečný cyklus, ukončíte ho pomocí Ctrl+C: while true; do grep -E -i "^$(xclip -o | gawk -f /cesta/prvni_dve_slova.awk)\>" \ "${anj_slovnik}" | dialog --progressbox "překlad" 100 100 # xclip -o znamená přesměrování schránky X na standardní výstup # pomocí konstrukce $() předáme výstup programů uvedených uvnitř této # konstrukce jako parametr programu grep # dialog pouze zobrazí výsledek překladu # Grep najde řádky odpovídající obsahu schránky. # Počkáme 5 sekund, než začně další "obrátka" nekonečného cyklu". sleep 5 done
Poznámka: "program" jsem moc netestoval. Spíš mi jde o to, abych si někde uchoval poznatky.
Tiskni
Sdílej:
#!/bin/sh
anj_slovnik="./slovnik_data_utf8.txt"
while true; do
cat "$anj_slovnik" | awk "/#/ {next;} /$(xsel -b | head -1)/" | head -10 | dialog --progressbox "překlad" 100 100
sleep 3
done
#!/bin/sh
anj_slovnik="./slovnik_data_utf8.txt"
while true; do
cat "$anj_slovnik" | awk "/#/ {next;} /$(xsel -b | head -1)/" | head -10 | dialog --progressbox "překlad" 100 100
sleep 3
done
Díky.
#!/bin/bash
zenity --info --text "`zenity --entry | sdcv`"
Děkuju všem za tipy.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.