OTWO-1213 Works around lost encoding in Ruby/C binding layer
[ohcount] / test / src_dir / optimer
1 #!/bin/sh
2 # optimer – Masserer ordlistefilene til eit kjaptsøkt format.
3 #
4 # Copyright © 2008, 2009 Karl Ove Hufthammer <karl@huftis.org>.
5 #
6 #     This file is part of Ordbanken.
7 #
8 #     Ordbanken is free software: you can redistribute it and/or modify
9 #     it under the terms of the GNU General Public License as published by
10 #     the Free Software Foundation, either version 3 of the License, or
11 #     (at your option) any later version.
12 #
13 #     This program is distributed in the hope that it will be useful,
14 #     but WITHOUT ANY WARRANTY; without even the implied warranty of
15 #     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 #     GNU General Public License for more details.
17 #
18 #     You should have received a copy of the GNU General Public License
19 #     along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
21 # Utfør kommandoen på fila oppgjeven som førsteargument.
22 fil=$1
23 echo $fil
24
25 # Forklaring på filtreringskommandoane.
26 #  grep: Filtrer vekk kommentarar (linjer som startar med «*»).
27 #  fgrep: Filtrer unormerte ord.
28 #  sed: Gjer om mellomrom i siste del av linja (der kodane er) til tabulatorar.
29 #       (Korfor den kompliserte sed-kommandoen? Fordi kodane i utgangspunktet er
30 #       skilde med mellomrom i staden for med tabulatorar. Dette ville ikkje vore
31 #       noko problem om alle oppføringar besto av eitt ord, då «column» som
32 #       standard handterer mellomrom og tabulatorar likt, men ordbanken har
33 #       oppføringar som «på kryss og tvers», og då ville alle orda få kvar si
34 #       kolonne (bruk «på» som oppslagsord for å sjå oppføringa).
35 #  sed: Fjern kodar (på forma <kode1>) som inneheld tal (interne/uforståelige kodar).
36 #  sed: Fjern kodar («ord» utan <>) som startar med tal (interne/uforståelige kodar).
37 #  sed: Fjern talkoden på starten av linja.
38 #  tr: Slå saman etterfølgjande tabulatorar til éin.
39 #  sort: Sorter fila (slik at oppslag med «look» går raskare).
40 grep -v '^\*' $fil \
41 | fgrep -v "unormert" \
42 | sed -r 'h;s/^([^      ]+      [^      ]+      [^      ]+      )(.*)/\2/;s/ /  /g;G;s/(.*)\n([^        ]+      [^      ]+      [^      ]+      )(.*)/\2\1/' \
43 | sed -r 's/<[^>]*[0-9][^>]*>+/ /g' \
44 | sed -r 's/    [0-9]+[^        ]*/     /g' \
45 | sed -r 's/^[0-9]+\s+//' \
46 | tr -s '\t' \
47 | LC_ALL=C sort > "${fil%.txt}.dat"