docs/cut

changeset 21:bac481be86d7

Umlaute konvertiert
author markus schnalke <meillo@marmaro.de>
date Thu, 28 May 2015 06:41:08 +0200
parents c0e589b92c52
children 4193939c6a24
files cut.txt
diffstat 1 files changed, 119 insertions(+), 115 deletions(-) [+]
line diff
     1.1 --- a/cut.txt	Thu May 28 06:34:21 2015 +0200
     1.2 +++ b/cut.txt	Thu May 28 06:41:08 2015 +0200
     1.3 @@ -6,16 +6,16 @@
     1.4  
     1.5  Cut ist ein klassisches Programm im Unix-Werkzeugkasten.
     1.6  In keinem ordentlichen Tutorial zur Shellprogrammierung fehlt
     1.7 -es, denn es ist ein schoenes, praktisches und anschauliches
     1.8 +es, denn es ist ein schönes, praktisches und anschauliches
     1.9  Helferlein. Hier soll ein wenig hinter seine Fassade geschaut
    1.10  werden.
    1.11  
    1.12  
    1.13  Funktionsweise
    1.14  
    1.15 -Urspruenglich hatte cut zwei Modi, die spaeter um einen dritten
    1.16 -erweitert wurden. Cut schneidet entweder gewuenschte Zeichen aus
    1.17 -den Zeilen der Eingabe oder gewuenschte, durch Trennzeichen
    1.18 +Ursprünglich hatte cut zwei Modi, die später um einen dritten
    1.19 +erweitert wurden. Cut schneidet entweder gewünschte Zeichen aus
    1.20 +den Zeilen der Eingabe oder gewünschte, durch Trennzeichen
    1.21  definierte, Felder.
    1.22  
    1.23  Der Zeichenmodus ist optimal geeignet um Festbreitenformate zu
    1.24 @@ -35,24 +35,24 @@
    1.25  	$ ls -l | cut -c 3,6,9
    1.26  	ww-
    1.27  
    1.28 -Mit cut lassen sich aber auch Strings kuerzen.
    1.29 +Mit cut lassen sich aber auch Strings kürzen.
    1.30  
    1.31  	$ long=12345678901234567890
    1.32  	$ echo "$long" | cut -c -10
    1.33  	1234567890
    1.34  
    1.35  Dieser Befehl gibt die ersten maximal 10 Zeichen von
    1.36 -`$long' aus. (Alternativ kann man hierfuer `printf
    1.37 +`$long' aus. (Alternativ kann man hierfür `printf
    1.38  "%.10s\n" "$long"' verwenden.)
    1.39  
    1.40  Geht es aber nicht um die Darstellung von Zeichen, sondern um
    1.41  ihre Speicherung, dann ist `-c' nicht unbedingt geeignet.
    1.42 -Frueher, als US-ASCII noch die omnipraesente Zeichenkodierung
    1.43 +Früher, als US-ASCII noch die omnipräsente Zeichenkodierung
    1.44  war, wurde jedes Zeichen mit genau einem
    1.45 -Byte gespeichert. Somit selektierte `cut -c' gleichermassen
    1.46 +Byte gespeichert. Somit selektierte `cut -c' gleichermaßen
    1.47  sowohl Ausgabezeichen als auch Bytes. Mit dem Aufkommen von
    1.48  Multibyte-Kodierungen (wie UTF-8) musste man sich jedoch von
    1.49 -dieser Annahme loesen. In diesem Zug bekam cut mit
    1.50 +dieser Annahme lösen. In diesem Zug bekam cut mit
    1.51  POSIX.2-1992 einen Bytemodus (Option `-b'). Will man
    1.52  also nur die ersten maximal 500 Bytes vor dem
    1.53  Newline-Zeichen stehen haben (und den Rest stillschweigend
    1.54 @@ -61,11 +61,11 @@
    1.55  	$ cut -b -500
    1.56  
    1.57  Den Rest kann man sich mit `cut -b 501-' einfangen. Diese
    1.58 -Funktion ist insbesondere fuer POSIX wichtig, da man damit
    1.59 -Textdateien mit begrenzter Zeilenlaenge erzeugen kann.
    1.60 +Funktion ist insbesondere für POSIX wichtig, da man damit
    1.61 +Textdateien mit begrenzter Zeilenlänge erzeugen kann.
    1.62  [ http://pubs.opengroup.org/onlinepubs/9699919799/utilities/cut.html#tag_20_28_17
    1.63  
    1.64 -Wenn auch der Bytemodus neu eingefuehrt worden war, so sollte
    1.65 +Wenn auch der Bytemodus neu eingeführt worden war, so sollte
    1.66  er sich doch nur so verhalten wie der alte Zeichenmodus
    1.67  normalerweise schon implementiert war. Beim Zeichenmodus aber
    1.68  wurde eine neue Implementierungsweise gefordert. Das Problem
    1.69 @@ -74,11 +74,11 @@
    1.70  
    1.71  Neben dem Zeichen- und Bytemodus bietet cut noch den
    1.72  Feldmodus, den man mit `-f' einleitet. Mit ihm
    1.73 -koennen Felder ausgewaehlt werden. Das Trennzeichen (per
    1.74 -Default der Tab) kann mit `-d' geaendert werden. Es gilt in
    1.75 -gleicher Weise fuer die Eingabe und die Ausgabe.
    1.76 +können Felder ausgewählt werden. Das Trennzeichen (per
    1.77 +Default der Tab) kann mit `-d' geändert werden. Es gilt in
    1.78 +gleicher Weise für die Eingabe und die Ausgabe.
    1.79  
    1.80 -Der typische Anwendungsfall fuer cut im Feldmodus ist die
    1.81 +Der typische Anwendungsfall für cut im Feldmodus ist die
    1.82  Auswahl von Information aus der passwd-Datei. Hier z.B. der
    1.83  Benutzername und seine ID:
    1.84  
    1.85 @@ -89,27 +89,27 @@
    1.86  	mail:8
    1.87  	...
    1.88  
    1.89 -(Die Argumente fuer die Optionen koennen bei cut uebrigens
    1.90 -mit Whitespace abgetrennt oder direkt angehaengt folgen.)
    1.91 +(Die Argumente für die Optionen können bei cut übrigens
    1.92 +mit Whitespace abgetrennt oder direkt angehängt folgen.)
    1.93  
    1.94 -Dieser Feldmodus ist fuer einfache tabellarische Dateien,
    1.95 +Dieser Feldmodus ist für einfache tabellarische Dateien,
    1.96  wie eben die passwd, gut geeignet. Er kommt aber schnell an
    1.97 -seine Grenzen. Gerade der haeufige Fall, dass an Whitespace
    1.98 +seine Grenzen. Gerade der häufige Fall, dass an Whitespace
    1.99  in Felder geteilt werden soll, wird damit nicht abgedeckt.
   1.100  Der Delimiter kann bei cut nur genau ein Zeichen sein. Es kann
   1.101  demnach nicht sowohl an Leerzeichen als auch an Tabs aufgetrennt
   1.102  werden. Zudem unterteilt cut an jedem Trennzeichen. Zwei aneinander
   1.103 -stehende Trennzeichen fuehren zu einem leeren Feld. Dieses
   1.104 +stehende Trennzeichen führen zu einem leeren Feld. Dieses
   1.105  Verhalten widerspricht den Erwartungen, die man an die
   1.106  Verarbeitung einer Datei mit Whitespace-getrennten Feldern
   1.107  hat. Manche Implementierungen von cut, z.B. die von FreeBSD,
   1.108 -haben deshalb Erweiterungen, die das gewuenschte Verhalten
   1.109 -fuer Whitespace-getrennte Felder bieten. Ansonsten, d.h. wenn
   1.110 +haben deshalb Erweiterungen, die das gewünschte Verhalten
   1.111 +für Whitespace-getrennte Felder bieten. Ansonsten, d.h. wenn
   1.112  man portabel bleiben will, verwendet man awk in diesen
   1.113 -Faellen.
   1.114 +Fällen.
   1.115  
   1.116  Awk bietet noch eine weitere Funktion, die cut missen
   1.117 -laesst: Das Tauschen der Feld-Reihenfolge in der Ausgabe. Bei
   1.118 +lässt: Das Tauschen der Feld-Reihenfolge in der Ausgabe. Bei
   1.119  cut ist die Reihenfolge der Feldauswahlangabe irrelevant; ein
   1.120  Feld kann selbst mehrfach angegeben werden. Dementsprechend gibt
   1.121  der Aufruf
   1.122 @@ -121,8 +121,8 @@
   1.123  der Manpage von Version 8 Unix wiederzugeben: ``In data base
   1.124  parlance, it projects a relation.''
   1.125  [ http://man.cat-v.org/unix_8th/1/cut
   1.126 -Cut fuehrt demnach die Datenbankoperation Projektion auf
   1.127 -Textdateien aus. Die Wikipedia erklaert das folgendermassen:
   1.128 +Cut führt demnach die Datenbankoperation Projektion auf
   1.129 +Textdateien aus. Die Wikipedia erklärt das folgendermaßen:
   1.130  
   1.131  	Die Projektion entspricht der Projektionsabbildung aus der
   1.132  	Mengenlehre und kann auch Attributbeschränkung genannt
   1.133 @@ -137,28 +137,28 @@
   1.134  Geschichtliches
   1.135  
   1.136  Cut erblickte 1982 mit dem Release von UNIX System III das
   1.137 -Licht der oeffentlichen Welt. Wenn man die Quellen von System
   1.138 +Licht der öffentlichen Welt. Wenn man die Quellen von System
   1.139  III durchforstet, findet man die Quellcodedatei cut.c mit dem
   1.140  Zeitstempel 1980-04-11.
   1.141  [ http://minnie.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/cmd
   1.142 -Das ist die aelteste Manifestation des Programms, die ich
   1.143 -aufstoebern konnte. Allerdings spricht die SCCS-ID im
   1.144 +Das ist die älteste Manifestation des Programms, die ich
   1.145 +aufstöbern konnte. Allerdings spricht die SCCS-ID im
   1.146  Quellcode von Version 1.5. Die Vorgeschichte liegt, der Aussage
   1.147  Doug McIlroys
   1.148  [ XXX
   1.149 -zufolge, in PWB/UNIX, das die Grundlage fuer System III war.
   1.150 +zufolge, in PWB/UNIX, das die Grundlage für System III war.
   1.151  (PWB 3.0 entspricht System III.) In den von PWB 1.0 (1977)
   1.152 -verfuegbaren Quellen
   1.153 +verfügbaren Quellen
   1.154  [ XXX
   1.155  ist cut noch nicht zu finden; von PWB 2.0 sind mir keine
   1.156 -verfuegbaren Quellen oder hilfreiche Dokumentation bekannt.
   1.157 +verfügbaren Quellen oder hilfreiche Dokumentation bekannt.
   1.158  
   1.159 -Nun ein Blick auf die BSD-Linie: Dort ist mein fruehester
   1.160 +Nun ein Blick auf die BSD-Linie: Dort ist mein frühester
   1.161  Fund ein cut.c mit dem Dateimodifikationsdatum 1986-11-07
   1.162  [ http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-UWisc/src/usr.bin/cut
   1.163  als Teil der Spezialversion 4.3BSD-UWisc,
   1.164  [ http://gunkies.org/wiki/4.3_BSD_NFS_Wisconsin_Unix
   1.165 -die im Januar 1987 veroeffentlicht wurde.
   1.166 +die im Januar 1987 veröffentlicht wurde.
   1.167  Die Implementierung unterscheidet sich nur minimal von der
   1.168  in System III.
   1.169  Im bekannteren 4.3BSD-Tahoe (1988) tauchte cut nicht auf.
   1.170 @@ -169,12 +169,12 @@
   1.171  [ http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-Reno/src/usr.bin/cut
   1.172  Seine Manpage
   1.173  [ http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-Reno/src/usr.bin/cut/cut.1
   1.174 -erwaehnt bereits die erwartete Konformitaet mit POSIX.2.
   1.175 +erwähnt bereits die erwartete Konformität mit POSIX.2.
   1.176  Nun muss man wissen, dass POSIX.2 erst im September
   1.177 -1992 veroeffentlicht wurde, erst gut zwei Jahren nachdem die
   1.178 +1992 veröffentlicht wurde, erst gut zwei Jahren nachdem die
   1.179  Manpage und das Programm geschrieben worden waren. Das Programm
   1.180  wurde folglich anhand von Arbeitsversionen des Standards
   1.181 -implementiert. Ein Blick in den Code bekraeftigt diese Vermutung.
   1.182 +implementiert. Ein Blick in den Code bekräftigt diese Vermutung.
   1.183  In der Funktion zum parsen der Feldauswahlliste findet sich
   1.184  dieser Kommentar:
   1.185  
   1.186 @@ -182,61 +182,61 @@
   1.187  	POSIX doesn't allow lists that aren't in increasing order or
   1.188  	overlapping lists.
   1.189  
   1.190 -Im Draft 11.2 (1991-09) fordert POSIX diese Flexibilitaet bereits
   1.191 +Im Draft 11.2 (1991-09) fordert POSIX diese Flexibilität bereits
   1.192  ein:
   1.193  
   1.194  	The elements in list can be repeated, can overlap, and can
   1.195  	be specified in any order.
   1.196  
   1.197 -Zudem listet Draft 11.2 alle drei Modi, waehrend in diesem
   1.198 -BSD cut nur die zwei alten implementiert sind. Es koennte also
   1.199 +Zudem listet Draft 11.2 alle drei Modi, während in diesem
   1.200 +BSD cut nur die zwei alten implementiert sind. Es könnte also
   1.201  sein, dass in Draft 9 der Bytemodus noch nicht vorhanden war.
   1.202  Da ich keinen Zugang zu Draft 9 oder 10 finden konnte, war es mir
   1.203 -leider nicht moeglich, diese Vermutung zu pruefen.
   1.204 +leider nicht möglich, diese Vermutung zu prüfen.
   1.205  
   1.206 -Die Versionsnummern und Aenderungsdaten der aelteren
   1.207 +Die Versionsnummern und Änderungsdaten der älteren
   1.208  BSD-Implementierungen kann man aus den SCCS-IDs, die vom
   1.209 -damaligen Versionskontrollsystem in den Code eingefuegt wurden,
   1.210 +damaligen Versionskontrollsystem in den Code eingefügt wurden,
   1.211  ablesen. So z.B. bei 4.3BSD-Reno: ``5.3 (Berkeley) 6/24/90''.
   1.212  
   1.213 -Das cut der GNU Coreutils enthaelt folgenden Copyrightvermerk:
   1.214 +Das cut der GNU Coreutils enthält folgenden Copyrightvermerk:
   1.215  
   1.216  	Copyright (C) 1997-2015 Free Software Foundation, Inc.
   1.217  	Copyright (C) 1984 David M. Ihnat
   1.218  
   1.219 -Der Code hat also recht alte Urspruenge. Wie aus weiteren
   1.220 +Der Code hat also recht alte Ursprünge. Wie aus weiteren
   1.221  Kommentaren zu entnehmen ist, wurde der Programmcode zuerst von David
   1.222 -MacKenzie und spaeter von Jim Meyering ueberarbeitet. Letzterer
   1.223 +MacKenzie und später von Jim Meyering überarbeitet. Letzterer
   1.224  hat den Code 1992 auch ins Versionkontrollsystem eingestellt.
   1.225  Weshalb die Jahre vor 1997, zumindest ab 1992, nicht im
   1.226  Copyright-Vermerk auftauchen, ist unklar.
   1.227  
   1.228 -Trotz der vielen Jahreszahlen aus den 80er Jahren gehoert cut,
   1.229 -aus Sicht des urspruenglichen Unix, zu den juengeren Tools.
   1.230 -Wenn cut auch ein Jahrzehnt aelter als Linux, der Kernel, ist,
   1.231 -so war Unix doch schon ueber zehn Jahre alt, als cut das
   1.232 -erste Mal auftauchte. Insbesondere gehoerte cut noch nicht
   1.233 +Trotz der vielen Jahreszahlen aus den 80er Jahren gehört cut,
   1.234 +aus Sicht des ursprünglichen Unix, zu den jüngeren Tools.
   1.235 +Wenn cut auch ein Jahrzehnt älter als Linux, der Kernel, ist,
   1.236 +so war Unix doch schon über zehn Jahre alt, als cut das
   1.237 +erste Mal auftauchte. Insbesondere gehörte cut noch nicht
   1.238  zu Version 7 Unix, das die Ausgangsbasis aller modernen
   1.239  Unix-Systeme darstellt. Die weit komplexeren Programme sed
   1.240  und awk waren dort schon vertreten. Man muss sich also
   1.241 -fragen, warum cut ueberhaupt noch entwickelt wurde, wo es
   1.242 +fragen, warum cut überhaupt noch entwickelt wurde, wo es
   1.243  schon zwei Programme gab, die die Funktion von cut abdecken
   1.244 -konnten. Ein Argument fuer cut war sicher seine Kompaktheit und
   1.245 -die damit verbundene Geschwindigkeit gegenueber dem damals
   1.246 -traegen awk. Diese schlanke Gestalt ist es auch, die der
   1.247 +konnten. Ein Argument für cut war sicher seine Kompaktheit und
   1.248 +die damit verbundene Geschwindigkeit gegenüber dem damals
   1.249 +trägen awk. Diese schlanke Gestalt ist es auch, die der
   1.250  Unix-Philosopie entspricht: Mache eine Aufgabe und die richtig!
   1.251 -Cut ueberzeugte. Es wurde in andere Unix Varianten uebernommen,
   1.252 -standardisiert und ist heutzutage ueberall anzutreffen.
   1.253 +Cut überzeugte. Es wurde in andere Unix Varianten übernommen,
   1.254 +standardisiert und ist heutzutage überall anzutreffen.
   1.255  
   1.256 -Die urspruengliche Variante (ohne -b) wurde schon 1985 in
   1.257 +Die ursprüngliche Variante (ohne -b) wurde schon 1985 in
   1.258  der System V Interface Definition, einer wichtigen formalen
   1.259  Beschreibung von UNIX System V, spezifiziert und tauchte
   1.260 -anschliessend in allen relevanten Standards auf. Mit POSIX.2
   1.261 +anschließend in allen relevanten Standards auf. Mit POSIX.2
   1.262  im Jahre 1992 wurde cut zum ersten Mal in der heutigen Form
   1.263  (mit -b) standardisiert.
   1.264  
   1.265  
   1.266 -Multibyte-Unterstuetzung
   1.267 +Multibyte-Unterstützung
   1.268  
   1.269  Nun sind der Bytemodus und die damit verbundene
   1.270  Multibyte-Verarbeitung des POSIX-Zeichenmodus bereits seit
   1.271 @@ -245,11 +245,11 @@
   1.272  Die Situation ist dreiteilig: Es gibt historische
   1.273  Implementierungen, die nur -c und -f kennen. Dann gibt es
   1.274  Implementierungen die -b zwar kennen, es aber lediglich als Alias
   1.275 -fuer -c handhaben. Diese Implementierungen funktionieren mit
   1.276 +für -c handhaben. Diese Implementierungen funktionieren mit
   1.277  Single-Byte-Encodings (z.B. US-ASCII, Latin1) korrekt, bei
   1.278 -Multibyte-Encodings (z.B. UTF-8) verhaelt sich ihr -c aber
   1.279 -wie -b (und -n wird ignoriert). Schliesslich gibt es noch
   1.280 -Implementierungen, die -b und -c tatsaechlich POSIX-konform
   1.281 +Multibyte-Encodings (z.B. UTF-8) verhält sich ihr -c aber
   1.282 +wie -b (und -n wird ignoriert). Schließlich gibt es noch
   1.283 +Implementierungen, die -b und -c tatsächlich POSIX-konform
   1.284  implementieren.
   1.285  
   1.286  Historische Zwei-Modi-Implementierungen sind z.B. die von
   1.287 @@ -257,11 +257,11 @@
   1.288  
   1.289  Pseudo-Multibyte-Implementierungen bieten GNU und die
   1.290  modernen NetBSDs und OpenBSDs. Man darf sich sicher fragen,
   1.291 -ob dort ein Schein von POSIX-Konformitaet gewahrt wird.
   1.292 +ob dort ein Schein von POSIX-Konformität gewahrt wird.
   1.293  Teilweise findet man erst nach genauerer Suche heraus, dass
   1.294  -c und -n nicht wie erwartet funktionieren; teilweise machen es
   1.295  sich die Systeme auch einfach, indem sie auf
   1.296 -Singlebyte-Zeichenkodierungen beharren, das aber dafuer meist
   1.297 +Singlebyte-Zeichenkodierungen beharren, das aber dafür meist
   1.298  klar darlegen:
   1.299  
   1.300  	Since we don't support multi-byte characters, the -c and -b
   1.301 @@ -269,20 +269,20 @@
   1.302  
   1.303  [ http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/cut/cut.c?rev=1.18&content-type=text/x-cvsweb-markup
   1.304  
   1.305 -Tatsaechlich standardkonforme Implementierungen, die
   1.306 +Tatsächlich standardkonforme Implementierungen, die
   1.307  Multibytes korrekt handhaben, bekommt man bei einem modernen
   1.308  FreeBSD und bei den Heirloom Tools. Bei FreeBSD hat Tim Robbins
   1.309  im Sommer 2004 den Zeichenmodus POSIX-konform reimplementiert.
   1.310  [ https://svnweb.freebsd.org/base?view=revision&revision=131194
   1.311 -Warum die beiden anderen grossen BSDs diese Aenderung nicht
   1.312 -uebernommen haben, bleibt offen. Es scheint aber an der im
   1.313 +Warum die beiden anderen großen BSDs diese Änderung nicht
   1.314 +übernommen haben, bleibt offen. Es scheint aber an der im
   1.315  obigen Kommentar formulierten Grundausrichtung zu liegen.
   1.316  
   1.317  Wie findet man nun als Nutzer heraus, ob beim cut(1) des eigenen
   1.318 -Systems Multibytes korrekt unterstuetzt werden? Zuerst ist
   1.319 +Systems Multibytes korrekt unterstützt werden? Zuerst ist
   1.320  entscheidend, ob das System selbst mit einem Multibyte-Encoding
   1.321  arbeitet, denn tut es das nicht, dann entsprechen sich
   1.322 -Zeichen und Bytes und die Frage eruebrigt sich. Man kann das
   1.323 +Zeichen und Bytes und die Frage erübrigt sich. Man kann das
   1.324  herausfinden indem man sich das Locale anschaut, aber einfacher
   1.325  ist es, ein typisches Mehrbytezeichen, wie z.B. einen Umlaut,
   1.326  auszugeben und zu schauen ob dieses in einem oder in mehreren
   1.327 @@ -293,7 +293,7 @@
   1.328  	0000003
   1.329  
   1.330  In diesem Fall sind es zwei Bytes: oktal 303 und 244 . (Den
   1.331 -Zeilenumbruch fuegt echo(1) hinzu.)
   1.332 +Zeilenumbruch fügt echo(1) hinzu.)
   1.333  
   1.334  Mit dem Programm iconv(1) kann man Text explizit in bestimmte
   1.335  Kodierungen konvertieren. Hier Beispiele, wie die Ausgabe
   1.336 @@ -311,7 +311,7 @@
   1.337  wird recht sicher einer dieser beiden Ausgaben entsprechen.
   1.338  
   1.339  Nun zum Test der cut-Implementierung. Hat man ein UTF-8-System,
   1.340 -dann sollte sich eine POSIX-konforme Implementierung folgendermassen
   1.341 +dann sollte sich eine POSIX-konforme Implementierung folgendermaßen
   1.342  verhalten:
   1.343  
   1.344  	$ echo ä | cut -c 1 | od -c
   1.345 @@ -327,7 +327,7 @@
   1.346  	0000001
   1.347  
   1.348  Bei einer Pseudo-POSIX-Implementierung ist die Ausgabe in
   1.349 -allen drei Faellen wie die mittlere: Es wird das erste Byte
   1.350 +allen drei Fällen wie die mittlere: Es wird das erste Byte
   1.351  ausgegeben.
   1.352  
   1.353  
   1.354 @@ -336,15 +336,15 @@
   1.355  Nun ein Blick auf den Code. Betrachtet wird eine Auswahl an
   1.356  Implementierungen.
   1.357  
   1.358 -Fuer einen ersten Eindruck ist der Umfang des Quellcodes
   1.359 -hilfreich. Typischerweise steigt dieser ueber die Jahre an. Diese
   1.360 +Für einen ersten Eindruck ist der Umfang des Quellcodes
   1.361 +hilfreich. Typischerweise steigt dieser über die Jahre an. Diese
   1.362  Beobachtung kann hier in der Tendenz, aber nicht in jedem Fall,
   1.363 -bestaetigt werden. Die POSIX-konforme Umsetzung des Zeichenmodus
   1.364 -erfordert zwangslaeufig mehr Code, deshalb sind diese
   1.365 +bestätigt werden. Die POSIX-konforme Umsetzung des Zeichenmodus
   1.366 +erfordert zwangsläufig mehr Code, deshalb sind diese
   1.367  Implementierungen tendenziell umfangreicher.
   1.368  
   1.369  
   1.370 -	SLOC	Zeilen	Bytes	Gehoert zu  	Dateidatum	Kategorie
   1.371 +	SLOC	Zeilen	Bytes	Gehört zu  	Dateidatum	Kategorie
   1.372  	-----------------------------------------------------------------
   1.373  	116	123	 2966	System III	1980-04-11	(hist)
   1.374  	118	125	 3038	4.3BSD-UWisc	1986-11-07	(hist)
   1.375 @@ -360,56 +360,60 @@
   1.376  
   1.377  
   1.378  Das Kandidatenfeld teilt sich grob in vier Gruppen: (1) Die zwei
   1.379 -urspruenglichen Implementierungen, die sich nur minimal
   1.380 -unterscheiden, mit gut 100 SLOCs. (2) Die fuenf BSD-Versionen mit
   1.381 +ursprünglichen Implementierungen, die sich nur minimal
   1.382 +unterscheiden, mit gut 100 SLOCs. (2) Die fünf BSD-Versionen mit
   1.383  gut 200 SLOCs. (3) Die zwei POSIX-konformen Programme und
   1.384 -die alte GNU-Version mit 340-390 SLOCs. Und schliesslich (4) die
   1.385 +die alte GNU-Version mit 340-390 SLOCs. Und schließlich (4) die
   1.386  moderne GNU-Variante mit fast 600 SLOCs.
   1.387  
   1.388  Die Abweichung zwischen logischen Codezeilen (SLOC, ermittelt mit
   1.389 -SLOCcount) und der Anzahl von Zeilenumbruechen in der Datei (`wc
   1.390 --l') erstreckt sich ueber eine Spanne von Faktor 1.06 bei den
   1.391 -aeltesten Vertretern bis zu Faktor 1.5 bei GNU. Den groessten
   1.392 +SLOCcount) und der Anzahl von Zeilenumbrüchen in der Datei (`wc
   1.393 +-l') erstreckt sich über eine Spanne von Faktor 1.06 bei den
   1.394 +ältesten Vertretern bis zu Faktor 1.5 bei GNU. Den größten
   1.395  Einfluss darauf haben Leerzeilen, reine Kommentarzeilen und
   1.396 -die Groesse des Lizenzblocks am Dateianfang. 
   1.397 +die Größe des Lizenzblocks am Dateianfang. 
   1.398  
   1.399  Betrachtet man die Abweichungen zwischen den logischen Codezeilen
   1.400 -und der Dateigroesse (`wc -c'), so pendelt das Teilnehmerfeld
   1.401 +und der Dateigröße (`wc -c'), so pendelt das Teilnehmerfeld
   1.402  zwischen 25 und 30 Bytes je Anweisung. Die Heirloom-Implementierung
   1.403  weicht mit nur 21 nach unten ab, die GNU-Implementierungen mit
   1.404 -fast 40 nach oben. Bei GNU liegt dies hauptsaechlich an deren
   1.405 -Programmierstil, mit spezieller Einrueckung und langen Bezeichnern.
   1.406 -Ob man die Heirloom-Implementierung als besonders kryptisch
   1.407 +fast 40 nach oben. Bei GNU liegt dies hauptsächlich an deren
   1.408 +Programmierstil, mit spezieller Einrückung und langen Bezeichnern.
   1.409 +Ob man die Heirloom-Implementierung
   1.410 +[ XXX
   1.411 +als besonders kryptisch
   1.412  oder als besonders elegant bezeichnen will, das soll der
   1.413 -eigenen Einschaetzung des Lesers ueberlassen bleiben. Vor allem
   1.414 -der Vergleich mit einer GNU-Implementierung ist eindrucksvoll.
   1.415 +eigenen Einschätzung des Lesers überlassen bleiben. Vor allem
   1.416 +der Vergleich mit einer GNU-Implementierung
   1.417 +[ XXX
   1.418 +ist eindrucksvoll.
   1.419  
   1.420  
   1.421 -Die interne Struktur der Programmcodes (in C) ist meist aehnlich.
   1.422 +Die interne Struktur der Programmcodes (in C) ist meist ähnlich.
   1.423  Neben der obligatorischen main-Funktion, die die Kommandozeilenargumente
   1.424  verarbeitet, gibt es im Normalfall eine Funktion, die die
   1.425 -Feldauswahl in eine interne Datenstruktur ueberfuehrt. Desweiteren
   1.426 -haben fast alle Implementierungen separate Funktionen fuer die
   1.427 +Feldauswahl in eine interne Datenstruktur überführt. Desweiteren
   1.428 +haben fast alle Implementierungen separate Funktionen für die
   1.429  zwei oder drei Modi. Bei den POSIX-konformen Implementierungen
   1.430  wird die `-b -n'-Kombination als weiterer Modus behandelt, und
   1.431 -damit in einer eigenen Funktion umgesetzt. Nur bei der fruehen
   1.432 +damit in einer eigenen Funktion umgesetzt. Nur bei der frühen
   1.433  System III-Implementierung (und seiner 4.3BSD-UWisc-Variante)
   1.434 -wird ausser den Fehlerausgaben alles in der main-Funktion
   1.435 +wird außer den Fehlerausgaben alles in der main-Funktion
   1.436  erledigt.
   1.437  
   1.438  Cut-Implementierungen haben typischerweise zwei limitierende
   1.439 -Groessen: Die Maximalanzahl unterstuetzter Felder und die maximale
   1.440 -Zeilenlaenge. Bei System III sind beide Groessen auf 512 begrenzt.
   1.441 +Größen: Die Maximalanzahl unterstützter Felder und die maximale
   1.442 +Zeilenlänge. Bei System III sind beide Größen auf 512 begrenzt.
   1.443  4.3BSD-Reno und die BSDs der 90er Jahre haben ebenfalls fixe
   1.444  Grenzen (_BSD_LINE_MAX bzw. _POSIX2_LINE_MAX). Bei modernen
   1.445  FreeBSDs, NetBSDs, bei allen GNU-Implementierungen und bei
   1.446  Heirloom kann sowohl die Felderanzahl als auch die maximale
   1.447 -Zeilenlaenge beliebig gross werden; der Speicher dafuer wird
   1.448 +Zeilenlänge beliebig groß werden; der Speicher dafür wird
   1.449  dynamisch alloziiert. OpenBSD ist ein Hybrid aus fixer
   1.450 -Maximalzahl an Feldern, aber beliebiger Zeilenlaenge. Die
   1.451 +Maximalzahl an Feldern, aber beliebiger Zeilenlänge. Die
   1.452  begrenzte Felderanzahl scheint jedoch kein Praxisproblem
   1.453  darzustellen, da _POSIX2_LINE_MAX mit mindestens 2048 durchaus
   1.454 -gross genug sein sollte.
   1.455 +groß genug sein sollte.
   1.456  
   1.457  
   1.458  Beschreibungen
   1.459 @@ -448,44 +452,44 @@
   1.460  
   1.461  
   1.462  Die mit ``(src)'' markierten Beschreibungen sind aus dem
   1.463 -jeweiligen Quellcode entnommen. Der POSIX-Eintrag enthaelt
   1.464 +jeweiligen Quellcode entnommen. Der POSIX-Eintrag enthält
   1.465  die Beschreibung im Standard. Der ``Unix Reader'' ist ein
   1.466 -rueckblickendes Textdokument von Doug McIlroy, das das
   1.467 +rückblickendes Textdokument von Doug McIlroy, das das
   1.468  Auftreten der Tools in der Geschichte des Research Unix zum
   1.469  Thema hat.
   1.470  [ http://doc.cat-v.org/unix/unix-reader/contents.pdf
   1.471  Eigentlich sollte seine Beschreibung der in Version 8 Unix
   1.472 -entsprechen. Die Abweichung koennte ein Uebertragungsfehler
   1.473 -oder eine nachtraegliche Korrektur sein. Alle uebrigen
   1.474 +entsprechen. Die Abweichung könnte ein Übertragungsfehler
   1.475 +oder eine nachträgliche Korrektur sein. Alle übrigen
   1.476  Beschreibungen entstammen den Manpages.
   1.477  
   1.478 -Oft ist mit der Zeit die POSIX-Beschreibung uebernommen
   1.479 +Oft ist mit der Zeit die POSIX-Beschreibung übernommen
   1.480  oder an sie angeglichen worden, wie beispielsweise bei FreeBSD.
   1.481  [ https://svnweb.freebsd.org/base?view=revision&revision=167101
   1.482  
   1.483  Interessant ist, dass die GNU coreutils seit Anbeginn vom
   1.484  Entfernen von Teilen der Eingabe sprechen, wohingegen die
   1.485 -Kommandozeilenangabe klar ein Auswaehlen darstellt. Die
   1.486 -Worte ``cut out'' sind vielleicht auch zu missverstaendlich.
   1.487 -HP-UX hat sie deshalb praezisiert.
   1.488 +Kommandozeilenangabe klar ein Auswählen darstellt. Die
   1.489 +Worte ``cut out'' sind vielleicht auch zu missverständlich.
   1.490 +HP-UX hat sie deshalb präzisiert.
   1.491  
   1.492  Beim Begriff, was selektiert wird, ist man sich ebenfalls
   1.493  uneins. Die Einen reden von Feldern (POSIX), Andere von
   1.494  Abschnitten bzw. Teilen (BSD) und wieder Andere von Spalten
   1.495  (Research Unix). Ironischerweise leistet sich gerade Version
   1.496  8 Unix, das eigentlich um eine sehr treffende Weltsicht
   1.497 -bemueht ist, mit ``rearrange columns of data'' die
   1.498 +bemüht ist, mit ``rearrange columns of data'' die
   1.499  unzutreffendste der Beschreibungen.
   1.500  
   1.501  
   1.502  Autoreninfo
   1.503  
   1.504 -Markus Schnalke interessiert sich fuer die Hintergruende
   1.505 -von Unix und seinen Werkzeugen. Fuer die Erarbeitung dieses
   1.506 +Markus Schnalke interessiert sich für die Hintergründe
   1.507 +von Unix und seinen Werkzeugen. Für die Erarbeitung dieses
   1.508  Textes wurde er regelrecht zum Historiker.
   1.509  
   1.510  
   1.511  Lizenz
   1.512  
   1.513  CC0 (und kann damit auch unter CC BY-SA 4.0 Unported
   1.514 -veroeffentlicht werden)
   1.515 +veröffentlicht werden)