You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
6.0 KiB
121 lines
6.0 KiB
# SortWords
|
|
|
|
SortWords ist ein Bash-Skript, dass eine Liste von Wörtern nach ihren auftretenden Buchstaben sortiert. Damit können Buchstaben in KTouch-Lektionen der Reihe nach eingeführt werden und in jeder Stufe nur die Wörter abgefragt werden, deren Buchstaben bereits bekannt sind.
|
|
|
|
Die [Lektion](KTouchFuerNeoEinrichten.md#lektionen) *Deutsch (Neo2 10.000 Wörter)* wurde mit diesem Skript erstellt.
|
|
|
|
## Download
|
|
Alle Dateien befinden sich im Repository unter [ktouch/tools/sortWords](https://git.neo-layout.org/neo/neo-layout/src/branch/master/ktouch/tools/sortWords). Dabei sind nur folgende Dateien zum Ausführen notwendig:
|
|
|
|
* [in.txt](https://git.neo-layout.org/neo/neo-layout/raw/branch/master/ktouch/tools/sortWords/in.txt) - Eine beliebige Textdatei mit den zu sortierenden Wörtern.
|
|
* [key.conf](https://git.neo-layout.org/neo/neo-layout/raw/branch/master/ktouch/tools/sortWords/key.conf) - Konfigurationsdatei mit der Reihenfolge der Buchstaben
|
|
* [sortWords.sh](https://git.neo-layout.org/neo/neo-layout/raw/branch/master/ktouch/tools/sortWords/sortWords.sh) - Das Skript selbst
|
|
|
|
Die beiden `out`-Dateien sind Beispiel-Ausgaben.
|
|
|
|
## Einrichten
|
|
### in.txt
|
|
Zum Einrichten lässt sich einerseits die Eingabedatei `in.txt` beliebig wählen. Sie enthält die zu sortierenden Wörter und muss UTF-8 kodiert sein. Die Wörter müssen durch eine beliebige Anzahl von Whitespacezeichen (also Windows-Zeilentrennzeichen, Linux-Zeilentrennzeichen, Leerzeichen, Tabulator, ...) von einander getrennt sein. Die Datei im Repository enthält die 10.000 häufigsten Wörter der deutschen Sprache.
|
|
Quelle: <http://wortschatz.uni-leipzig.de/html/wliste.html>
|
|
|
|
### key.conf
|
|
Zum anderen lässt sich über die Datei `key.conf` die Reihenfolge der in der KTouch-Lektion zu erlernenden Buchstaben festlegen. Zum editieren der Datei sind in ihr einige Kommentare als Hilfe gestellt. Die vorgegebene Datei ist auf die [1.Ebene](https://neo-layout.org/grafik/tastatur3d/tastatur_neo_Ebene1.png) der Neo2-Tastaturbelegung eingestellt.
|
|
|
|
## Syntax
|
|
Nach dem Download lässt sich die Syntax über den Befehl
|
|
```
|
|
./sortWords.sh --help
|
|
```
|
|
einblenden:
|
|
```
|
|
Usage: ./sortWords.sh [OPTIONEN]
|
|
Liest aus der Datei "in.txt" alle Wörter ein und gibt diese sortiert nach der in
|
|
der Datei "key.conf" festgelegten Reihenfolge weider aus.
|
|
Sie werden einmal in eine Klartextdatei "out.txt" und in eine KTouch-Lektion
|
|
"out.ktouch.xml" geschrieben.
|
|
Dabei ist egal, wie die Worte in "in.txt" voneinander getrennt sind.
|
|
(Windows-Zeilentrennzeichen, Linux-Zeilentrennzeichen, Leerzeichen, Tabulator, ...)
|
|
|
|
-k berücksichtige nur komplett klein geschriebene Worte
|
|
-w wandle alle Worte in klein-schreibeise um. Setzt automatisch die Option '-k'
|
|
-e entfernt doppelt vorkommende Worte und sortiert dabei die Ergebnisliste nach
|
|
dem Alphabet. Empfehlenswert in Verbindung mit der Option '-w', da hierbei zwei
|
|
gleiche Worte auftreten können, die sich zuvor durch Groß/kleinschreibung
|
|
unterschieden haben
|
|
-f:<SPALTEN> faltet die Ausgabedatei "out.txt" nach der angegebenen Anzahl von
|
|
Spalten. Standard=80
|
|
-z:<ZEILEN> maximale Anzahl an Zeilen pro Trainings-Lektion-Stufe.
|
|
(WARNUNG: Ausführung dauert sehr lange!)
|
|
|
|
Beispiel: ./sortWords.sh -w -e -z:4
|
|
```
|
|
|
|
Bei den Optionen ist zu beachten:
|
|
|
|
* `-f` bestimmt die maximale Zeilenlänge in jeder Stufe. Sofern `-f` nicht angegeben ist, wird das Skript mit dem Standardwert `-f:80` ausgeführt
|
|
* Ohne der Option `-z` wird pro Stufe genau ein neuer Buchstabe eingeführt. Dadurch kann aber bei einer Eingabeliste von vielen Tausend Wörtern schnelle eine Stufe der Lektion aus mehreren Hundert Wörtern bestehen. Mit `-z:<ZEILE>` wird die maximale Anzahl an Zeilen pro Stufe begrenzt auf `<ZEILE>`. Die Ausführung des Skriptes dauert mit dieser Option unverhältnismäßig lange, da sie schlecht implementiert ist (ich habe es halt nicht besser hinbekommmen ;-) )
|
|
|
|
## Ausführen
|
|
Es wird der in der Hilfe angegebene Beispiel-Aufruf ausgeführt:
|
|
```
|
|
Beispiel: ./sortWords.sh -w -e -z:4
|
|
```
|
|
mit den Logmeldungen:
|
|
```
|
|
Zeichenreihenfolge wird geladen: Aus Datei "key.conf"...OK
|
|
Quelldatei "in.txt" wird eingelesen...OK
|
|
Wörter gesamt = 10170
|
|
Formatiere den Quelltext...OK
|
|
Nach dem Filtern bleiben 9204 Wörter übrig.
|
|
|
|
Buchstaben | Anzahl der neuen Wörter
|
|
=====================================
|
|
en | 3
|
|
ar | 9
|
|
ud | 54
|
|
it | 141
|
|
l | 109
|
|
g | 281
|
|
c | 10
|
|
h | 318
|
|
o | 180
|
|
s | 926
|
|
w | 376
|
|
k | 476
|
|
p | 367
|
|
m | 803
|
|
z | 492
|
|
b | 1163
|
|
ä | 441
|
|
, | 0
|
|
v | 653
|
|
f | 1109
|
|
ö | 245
|
|
. | 0
|
|
x | 51
|
|
q | 22
|
|
ü | 514
|
|
j | 165
|
|
ß | 216
|
|
y | 80
|
|
|
|
Falte die Datei "out.txt" nach spätestens 80 Spalten...OK
|
|
Trainings-Lektions-Stufen werden auf 4 Zeilen begrenzt............................OK
|
|
Erstelle KTouch-Lektion "out.ktouch.xml"...OK
|
|
```
|
|
|
|
In Verbindung mit den beiden vorgegebenen Dateien `in.txt` und `key.conf` erstellt das Skript die bereits im Repository hinterlegten Ausgabedateien:
|
|
|
|
* [out.txt](https://git.neo-layout.org/neo/neo-layout/raw/branch/master/ktouch/tools/sortWords/out.txt) - Die sortierten Wörter in einem Klartextformat
|
|
* [out.ktouch.xml](https://git.neo-layout.org/neo/neo-layout/raw/branch/master/ktouch/tools/sortWords/out.ktouch.xml) - Die sortierten Wörter als KTouch-Lektion
|
|
|
|
Dabei bewirkten die verwendeten Optionen:
|
|
|
|
* Durch die Option `-w` wurden alle Wörter in kleinschreibweise umgewandelt, damit zum vereinfachten Lernen von Neo2 der Fokus auf den neu positionierten Buchstaben liegt.
|
|
* Die Eingabeliste `in.txt` ist nicht besonders gut bearbeitet. Es wiederholen sich ständig Wörter. Mit der Option `-e` werden die doppelten Einträge entfernt und die Liste (als Nebeneffekt) nach dem Alphabet sortiert. Dadurch werden Worte mit ähnlichem Anfang direkt hintereinander getippt. Beispiel:
|
|
```
|
|
trage tragen training traurig
|
|
```
|
|
Als Vorteil prägt man sich beim Schreiben die zu tippende Buchstabenfolge besser ein.
|
|
|
|
* Mit der Option `-z:4` wird verhindert, dass eine Stufe aus mehreren Hundert Wörtern bestehen kann. Pro Stufe sind also 4 Zeilen zu je höchstens 80 Zeichen erlaubt. Das bläht die Lektion auf annährend 300 Stufen auf.
|
|
|