Posted By

deepsoul on 08/09/09


Tagged

dictionary leo


Versions (?)

Query LEO dictionary from shell


 / Published in: Bash
 

The script below looks up its first argument on the LEO German-English dictionary. It is really just a dump of the rendered result page by lynx followed by a grep. But grep cannot handle the possible umlauts in the result page, so Perl is used for that. The first paragraph constructs a regular expression which replaces umlauts and their two-character aliases with partial regexes matching anything. The regex fraction $onetwo also matches two arbitrary characters, so it still works if the two-char sequence did not denote an umlaut.

  1. #!/bin/sh
  2.  
  3. onetwo='.{1,2}'
  4. re="$1"
  5. re="${re//[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]/.}"
  6. re="${re//ue/$onetwo}"
  7. re="${re//ae/$onetwo}"
  8. re="${re//oe/$onetwo}"
  9. re="${re//ss/$onetwo}"
  10.  
  11. # have to use perl for grepping because of umlauts
  12.  
  13. lynx -dump -nolist 'http://dict.leo.org/ende?lp=ende&lang=de&searchLoc=0&cmpType=relaxed&sectHdr=on&spellToler=on&search='"$1"'&relink=on' | perl -n -e "print if /$re/i;"

Report this snippet  

You need to login to post a comment.