Sun 21 Feb 2016 05:45:23 PM UTC, comment #1:
OK, no trur eg har funne ein måte å fiksa det. Her kjem ei oppsummering:
BSD look likar ikkje UTF-8 teikn om ein køyrer under C-lokalet (kanskje ikkje så rart), mens look frå util-linux ikkje har noko problem med det. Men viss me brukar argumentet «-d» kan me unngå det. Her er ein liten test:
LC_ALL=nn_NO.UTF-8 sort -d fullform_nn.dat > ord_utf8.txt
LC_ALL=C sort -d fullform_nn.dat > ord_c.txt
LC_ALL=nn_NO.UTF-8 look -d møllmiddel ord_utf8.txt
LC_ALL=nn_NO.UTF-8 look -d møllmiddel ord_c.txt
LC_ALL=C look -d møllmiddel ord_utf8.txt
LC_ALL=C look -d møllmiddel ord_c.txt
Av dei fire «look»-kommandoane fungerer 1 og 2 med BSD look (3 og 4 gjev feilmeldingar), mens 2 og 4 fungerer med look frå util-linux (ingen gjev feilmeldingar, men 1 og 3 gjev ingen resultat).
Ergo vil variant 2 fungera alle plassar. Me sorterer derfor med «LC_ALL=C sort -d» og køyrer «look -d» (utan nokon «LC_ALL»).
Men det er eit problem. «look -d» (frå util-linux) har ein annan definisjon av «-d» enn kva «sort -d» har. Det meiner eg er ein feil i «look -d», og har meldt han inn på
https://github.com/karelzak/util-linux/issues/284
Men uansett er konsekvensen at «look -d» ser vekk frå blankteikn ved oppslag, og sidan me skil ord med tabulator, får me ikkje lenger fullstendig filtrering. Eit oppslag på «hei» vil for eksempel også finna «heissjakt». Derfor må me etterfiltrera søkeresultata for å fjerna desse falske treffa.
Likevel hjelper filtreringa godt på (ein slepp for eksempel unna med å etterfiltrera berre dei cirka 2000 orda som begynner på «hei», i staden for dei halv million orda som finst i ordlista), og programmet er derfor for dei flesta orda omtrent like raskt som før. Unntak er «orda» æ, ø og å (og Æ, Ø og Å), sidan «look»-filtreringa ikkje hjelper i det heile tatt på filtreringa. Men det er ein liten pris å betala for kompatibilitet, synest eg.
Retta i revisjon 167 (med ei lita tilleggsendring i revisjon 168).
|