Portál AbcLinuxu, 30. dubna 2025 21:24

Kombinace grepu, dialogu, xclipu a gawk

4.8.2011 19:29 | Přečteno: 1224× | GNU/Linux | Výběrový blog | poslední úprava: 4.8.2011 21:34

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.

gawk

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
  }
}

Shellový skript

#!/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.

       

Hodnocení: 75 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

4.8.2011 20:03 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Kombinace grepu, dialogu, xclipu a gawk
Odpovědět | Sbalit | Link | Blokovat | Admin
Proč tak složitě?

#!/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
SPD vůbec není proruská
4.8.2011 20:04 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Kombinace grepu, dialogu, xclipu a gawk
Pardon, zapomněl jsem pre:
#!/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
4.8.2011 20:26 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: Kombinace grepu, dialogu, xclipu a gawk

Díky.

4.8.2011 22:44 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Kombinace grepu, dialogu, xclipu a gawk
...určitě by se to dalo ještě vylepšit...
5.8.2011 07:21 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: Kombinace grepu, dialogu, xclipu a gawk

Jasně. Jestli budu mít čas a chuť, tak se kouknu, jak by to šlo vylepšit. Každopádně díky za inspiraci.

Chytrex avatar 4.8.2011 21:48 Chytrex | skóre: 30 | Bohumín
Rozbalit Rozbalit vše Re: Kombinace grepu, dialogu, xclipu a gawk
Odpovědět | Sbalit | Link | Blokovat | Admin
Já na tohle používám qstardict :)
Hrdý člen KERNEL ULTRAS .:. define QUESTION ((bb) || !(bb)) .:. Odmítám vaši realitu a nahrazuji ji svou vlastní..
kotyz avatar 4.8.2011 21:51 kotyz | skóre: 25 | blog: kotyzblog | Plzeň
Rozbalit Rozbalit vše Re: Kombinace grepu, dialogu, xclipu a gawk
Z toho sem přešel na goldendict ;-)
Hrdý člen KERNEL ULTRAS. | Furry/Brony/Otaku | Nemám čas ztrácet čas. | In 'pacman -Syu' we trust!
4.8.2011 23:34 slayn | skóre: 5 | blog: Cokoliv
Rozbalit Rozbalit vše Re: Kombinace grepu, dialogu, xclipu a gawk
Odpovědět | Sbalit | Link | Blokovat | Admin
já používám stardict konzolovou verzi a zenity

#!/bin/bash
zenity --info --text "`zenity --entry | sdcv`"
To err is human, to arr is pirate!
5.8.2011 07:23 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: Kombinace grepu, dialogu, xclipu a gawk
Odpovědět | Sbalit | Link | Blokovat | Admin

Děkuju všem za tipy.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.