annotate cut.de.ms @ 37:c338b706447b

fix spelling
author markus schnalke <meillo@marmaro.de>
date Mon, 05 Oct 2015 06:48:17 +0200
parents c584c7d907c5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
1 .so macros
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
2 .lc_ctype de_DE.utf8
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
3
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
4 .TL
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
5 Cut out selected fields of each line of a file
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
6 .AU
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
7 markus schnalke <meillo@marmaro.de>
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
8 ..
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
9 .FS
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
10 2015-05.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
11 Dieser Text steht unter CC0.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
12 Er ist online verfügbar:
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
13 .I http://marmaro.de/docs/
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
14 .FE
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
15
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
16 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
17 Cut ist ein klassisches Programm im Unix-Werkzeugkasten.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
18 In keinem ordentlichen Tutorial zur Shellprogrammierung fehlt
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
19 es, denn es ist ein schönes, praktisches und anschauliches
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
20 Helferlein. Hier soll ein wenig hinter seine Fassade geschaut
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
21 werden.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
22 .SH
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
23 Funktionsweise
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
24 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
25 Ursprünglich hatte cut zwei Modi, die später um einen dritten
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
26 erweitert wurden. Cut schneidet entweder gewünschte Zeichen aus
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
27 den Zeilen der Eingabe oder gewünschte, durch Trennzeichen
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
28 definierte, Felder.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
29 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
30 Der Zeichenmodus ist optimal geeignet um Festbreitenformate zu
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
31 zerteilen. Man kann damit beispielsweise bestimmte
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
32 Zugriffsrechte aus der Ausgabe von \f(CWls -l\fP ausschneiden, in
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
33 diesem Beispiel die Rechte des Besitzers:
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
34 .CS
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
35 $ ls -l foo
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
36 -rw-rw-r-- 1 meillo users 0 May 12 07:32 foo
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
37 .sp .3
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
38 $ ls -l foo | cut -c 2-4
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
39 rw-
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
40 .CE
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
41 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
42 Oder die Schreibrechte des Besitzers, der Gruppe und der
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
43 Welt:
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
44 .CS
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
45 $ ls -l foo | cut -c 3,6,9
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
46 ww-
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
47 .CE
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
48 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
49 Mit cut lassen sich aber auch Strings kürzen.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
50 .CS
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
51 $ long=12345678901234567890
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
52 .sp .3
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
53 $ echo "$long" | cut -c -10
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
54 1234567890
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
55 .CE
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
56 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
57 Dieser Befehl gibt die ersten maximal 10 Zeichen von
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
58 \f(CW$long\fP aus. (Alternativ kann man hierfür \f(CWprintf
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
59 "%.10s\\n" "$long"\fP verwenden.)
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
60 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
61 Geht es aber nicht um die Darstellung von Zeichen, sondern um
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
62 ihre Speicherung, dann ist \f(CW-c\fP nur bedingt geeignet.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
63 Früher, als US-ASCII noch die omnipräsente Zeichenkodierung
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
64 war, wurde jedes Zeichen mit genau einem
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
65 Byte gespeichert. Somit selektierte \f(CWcut -c\fP gleichermaßen
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
66 sowohl Ausgabezeichen als auch Bytes. Mit dem Aufkommen von
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
67 Multibyte-Kodierungen (wie UTF-8) musste man sich jedoch von
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
68 dieser Annahme lösen. In diesem Zug bekam cut mit
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
69 POSIX.2-1992 einen Bytemodus (Option \f(CW-b\fP). Will man
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
70 also nur die ersten maximal 500 Bytes vor dem
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
71 Newline-Zeichen stehen haben (und den Rest stillschweigend
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
72 ignorieren), dann macht man das mit:
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
73 .CS
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
74 $ cut -b -500
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
75 .CE
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
76 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
77 Den Rest kann man sich mit \f(CWcut -b 501-\fP einfangen. Diese
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
78 Funktion ist insbesondere für POSIX wichtig, da man damit
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
79 Textdateien mit begrenzter Zeilenlänge erzeugen kann
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
80 .[[ http://pubs.opengroup.org/onlinepubs/9699919799/utilities/cut.html#tag_20_28_17 .
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
81 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
82 Wenn auch der Bytemodus neu eingeführt worden war, so sollte
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
83 er sich doch nur so verhalten wie der alte Zeichenmodus
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
84 normalerweise schon implementiert war. Beim Zeichenmodus wurde
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
85 dagegen eine neue Implementierungsweise gefordert. Das Problem
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
86 war folglich nicht, den neuen Bytemodus zu implementieren, sondern
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
87 den Zeichenmodus neu zu implementieren.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
88 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
89 Neben dem Zeichen- und Bytemodus bietet cut noch den
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
90 Feldmodus, den man mit \f(CW-f\fP einleitet. Mit ihm
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
91 können Felder ausgewählt werden. Das Trennzeichen (per
36
c584c7d907c5 Seiten- und Zeilenumbrueche optimiert
markus schnalke <meillo@marmaro.de>
parents: 26
diff changeset
92 Default der Tab) kann mit \f(CW-d\fP ge\%ändert werden. Es gilt in
26
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
93 gleicher Weise für die Eingabe und die Ausgabe.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
94 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
95 Der typische Anwendungsfall für cut im Feldmodus ist die
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
96 Auswahl von Information aus der passwd-Datei. Hier z.B. der
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
97 Benutzername und seine ID:
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
98 .CS
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
99 $ cut -d: -f1,3 /etc/passwd
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
100 root:0
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
101 bin:1
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
102 daemon:2
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
103 mail:8
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
104 ...
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
105 .CE
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
106 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
107 (Die Argumente für die Optionen können bei cut übrigens
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
108 sowohl mit Whitespace abgetrennt als auch direkt angehängt folgen.)
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
109 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
110 Dieser Feldmodus ist für einfache tabellarische Dateien,
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
111 wie eben die passwd, gut geeignet. Er kommt aber schnell an
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
112 seine Grenzen. Gerade der häufige Fall, dass an Whitespace
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
113 in Felder geteilt werden soll, wird damit nicht abgedeckt.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
114 Der Delimiter kann bei cut nur genau ein Zeichen sein. Es kann
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
115 demnach nicht sowohl an Leerzeichen als auch an Tabs aufgetrennt
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
116 werden. Zudem unterteilt cut an jedem Trennzeichen. Zwei aneinander
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
117 stehende Trennzeichen führen zu einem leeren Feld. Dieses
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
118 Verhalten widerspricht den Erwartungen, die man an die
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
119 Verarbeitung einer Datei mit Whitespace-getrennten Feldern
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
120 hat. Manche Implementierungen von cut, z.B. die von FreeBSD,
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
121 haben deshalb Erweiterungen, die das gewünschte Verhalten
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
122 für Whitespace-getrennte Felder bieten. Ansonsten, d.h. wenn
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
123 man portabel bleiben will, verwendet man awk in diesen
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
124 Fällen.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
125 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
126 Awk bietet noch eine weitere Funktion, die cut missen
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
127 lässt: Das Tauschen der Feld-Reihenfolge in der Ausgabe. Bei
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
128 cut ist die Reihenfolge der Feldauswahlangabe irrelevant; ein
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
129 Feld kann selbst mehrfach angegeben werden. Dementsprechend gibt
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
130 der Aufruf
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
131 von \f(CWcut -c 5-8,1,4-6\fP die Zeichen Nummer 1, 4, 5, 6, 7 und 8
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
132 in genau dieser Reihenfolge aus. Die Auswahl entspricht damit
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
133 der Mengenlehre in der Mathematik: Jedes angegebene Feld wird
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
134 Teil der Ergebnismenge. Die Felder der Ergebnismenge sind
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
135 hierbei immer gleich geordnet wie in der Eingabe. Um die Worte
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
136 der Manpage von Version 8 Unix wiederzugeben: ``In data base
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
137 parlance, it projects a relation.''
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
138 .[[ http://man.cat-v.org/unix_8th/1/cut
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
139 Cut führt demnach die Datenbankoperation Projektion auf
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
140 Textdateien aus. Die Wikipedia
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
141 erklärt das folgendermaßen:
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
142 .QP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
143 Die Projektion entspricht der Projektionsabbildung aus der
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
144 Mengenlehre und kann auch Attributbeschränkung genannt
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
145 werden. Sie extrahiert einzelne Attribute aus der
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
146 ursprünglichen Attributmenge und ist somit als eine Art
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
147 Selektion auf Spaltenebene zu verstehen, das heißt, die
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
148 Projektion blendet Spalten aus.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
149 .[[ http://de.wikipedia.org/wiki/Projektion_(Informatik)#Projektion
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
150
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
151 .SH
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
152 Geschichtliches
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
153 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
154 Cut erblickte 1982 mit dem Release von UNIX System III das
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
155 Licht der öffentlichen Welt. Wenn man die Quellen von System
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
156 III durchforstet, findet man cut.c mit dem Zeitstempel 1980-04-11
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
157 .[[ http://minnie.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/cmd .
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
158 Das ist die älteste Implementierung des Programms, die ich
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
159 aufstöbern konnte. Allerdings spricht die SCCS-ID im
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
160 Quellcode von Version 1.5. Die Vorgeschichte liegt, der Vermutung
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
161 Doug McIlroys
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
162 .[[ http://minnie.tuhs.org/pipermail/tuhs/2015-May/004083.html
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
163 zufolge, in PWB/UNIX, dessen Entwicklungslinie die Grundlage für
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
164 System III war. In den von PWB 1.0 (1977) verfügbaren Quellen
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
165 .[[ http://minnie.tuhs.org/Archive/PDP-11/Distributions/usdl/
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
166 ist cut noch nicht zu finden. Von PWB 2.0 scheinen keine
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
167 Quellen oder hilf\%reiche Dokumentation verfügbar zu sein.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
168 PWB 3.0 wurde später aus Marketinggründen als System III
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
169 bezeichnet und ist folglich mit ihm identisch. Eine Nebenlinie zu
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
170 PWB war CB UNIX, das nur innerhalb
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
171 der Bell Labs genutzt wurde. Das Handbuch von CB UNIX Edition 2.1
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
172 vom November 1979 enthält die früheste Erwähnung von cut, die
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
173 meine Recherche zutage gefördert hat: eine Manpage für cut
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
174 .[[ ftp://sunsite.icm.edu.pl/pub/unix/UnixArchive/PDP-11/Distributions/other/CB_Unix/cbunix_man1_02.pdf .
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
175 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
176 Nun ein Blick auf die BSD-Linie: Dort ist der früheste
36
c584c7d907c5 Seiten- und Zeilenumbrueche optimiert
markus schnalke <meillo@marmaro.de>
parents: 26
diff changeset
177 Fund ein cut.c mit dem Datei\%modifikationsdatum 1986-11-07
26
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
178 .[[ http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-UWisc/src/usr.bin/cut
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
179 als Teil der Spezialversion 4.3BSD-UWisc
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
180 .[[ http://gunkies.org/wiki/4.3_BSD_NFS_Wisconsin_Unix ,
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
181 die im Januar 1987 veröffentlicht wurde.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
182 Die Implementierung unterscheidet sich nur minimal von der
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
183 in System III.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
184 Im bekannteren 4.3BSD-Tahoe (1988) tauchte cut nicht auf.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
185 Das darauf folgende 4.3BSD-Reno (1990) lieferte aber wieder
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
186 ein cut mit aus. Dieses cut war ein von Adam S. Moskowitz und
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
187 Marciano Pitargue neu implementiertes cut, das 1989 in BSD
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
188 aufgenommen wurde
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
189 .[[ http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-Reno/src/usr.bin/cut .
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
190 Seine Manpage
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
191 .[[ http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-Reno/src/usr.bin/cut/cut.1
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
192 erwähnt bereits die erwartete Konformität mit POSIX.2.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
193 Nun muss man wissen, dass POSIX.2 erst im September
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
194 1992 veröffentlicht wurde, erst gut zwei Jahren nachdem die
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
195 Manpage und das Programm geschrieben worden waren. Das Programm
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
196 wurde folglich anhand von Arbeitsversionen des Standards
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
197 implementiert. Ein Blick in den Code bekräftigt diese Vermutung.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
198 In der Funktion zum Parsen der Feldauswahlliste findet sich
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
199 dieser Kommentar:
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
200 .QP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
201 This parser is less restrictive than the Draft 9 POSIX spec.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
202 POSIX doesn't allow lists that aren't in increasing order or
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
203 overlapping lists.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
204 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
205 Im Draft 11.2 (1991-09) fordert POSIX diese Flexibilität bereits
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
206 ein:
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
207 .QP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
208 The elements in list can be repeated, can overlap, and can
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
209 be specified in any order.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
210 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
211 Zudem listet Draft 11.2 alle drei Modi, während in diesem
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
212 BSD cut nur die zwei alten implementiert sind. Es könnte also
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
213 sein, dass in Draft 9 der Bytemodus noch nicht vorhanden war.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
214 Ohne Zugang zu Draft 9 oder 10, war es leider nicht möglich,
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
215 diese Vermutung zu prüfen.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
216 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
217 Die Versionsnummern und Änderungsdaten der älteren
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
218 BSD-Implementierungen kann man aus den SCCS-IDs, die vom
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
219 damaligen Versionskontrollsystem in den Code eingefügt wurden,
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
220 ablesen. So z.B. bei 4.3BSD-Reno: ``5.3 (Berkeley) 6/24/90''.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
221 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
222 Das cut der GNU Coreutils enthält folgenden Copyrightvermerk:
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
223 .CS
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
224 Copyright (C) 1997-2015 Free Software Foundation, Inc.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
225 Copyright (C) 1984 David M. Ihnat
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
226 .CE
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
227 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
228 Der Code hat also recht alte Ursprünge. Wie aus weiteren
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
229 Kommentaren zu entnehmen ist, wurde der Programmcode zuerst von David
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
230 MacKenzie und später von Jim Meyering überarbeitet. Letzterer
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
231 hat den Code 1992 auch ins Versionkontrollsystem eingestellt.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
232 Weshalb die Jahre vor 1997, zumindest ab 1992, nicht im
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
233 Copyright-Vermerk auftauchen, ist unklar.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
234 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
235 Trotz der vielen Jahreszahlen aus den 80er Jahren gehört cut,
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
236 aus Sicht des ursprünglichen Unix, zu den jüngeren Tools.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
237 Wenn cut auch ein Jahrzehnt älter als Linux, der Kernel, ist,
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
238 so war Unix schon über zehn Jahre alt, als cut das
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
239 erste Mal auftauchte. Insbesondere gehörte cut noch nicht
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
240 zu Version 7 Unix, das die Ausgangsbasis aller modernen
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
241 Unix-Systeme darstellt. Die weit komplexeren Programme sed
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
242 und awk waren dort aber schon vertreten. Man muss sich also
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
243 fragen, warum cut überhaupt noch entwickelt wurde, wo es
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
244 schon zwei Programme gab, die die Funktion von cut abdecken
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
245 konnten. Ein Argument für cut war sicher seine Kompaktheit und
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
246 die damit verbundene Geschwindigkeit gegenüber dem damals
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
247 trägen awk. Diese schlanke Gestalt ist es auch, die der
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
248 Unix-Philosopie entspricht: Mache eine Aufgabe und die richtig!
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
249 Cut überzeugte. Es wurde in andere Unix Varianten übernommen,
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
250 stan\%dard\%isiert und ist heutzutage überall anzutreffen.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
251 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
252 Die ursprüngliche Variante (ohne \f(CW-b\fP) wurde schon 1985 in
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
253 der System V Interface Definition, einer wichtigen formalen
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
254 Beschreibung von UNIX System V, spezifiziert und tauchte
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
255 anschließend in allen relevanten Standards auf. Mit POSIX.2
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
256 im Jahre 1992 wurde cut zum ersten Mal in der heutigen Form
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
257 (mit \f(CW-b\fP) standardisiert.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
258
36
c584c7d907c5 Seiten- und Zeilenumbrueche optimiert
markus schnalke <meillo@marmaro.de>
parents: 26
diff changeset
259 .pl -1
26
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
260 .SH
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
261 Multibyte-Unterstützung
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
262 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
263 Nun sind der Bytemodus und die damit verbundene
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
264 Multibyte-Verarbeitung des POSIX-Zeichenmodus bereits seit
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
265 1992 standardisiert, wie steht es aber mit deren Umsetzung?
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
266 Welche Versionen implementieren POSIX korrekt?
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
267 Die Situation ist dreiteilig: Es gibt historische
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
268 Implementierungen, die nur \f(CW-c\fP und \f(CW-f\fP kennen. Dann gibt es
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
269 Implementierungen die \f(CW-b\fP zwar kennen, es aber lediglich als Alias
36
c584c7d907c5 Seiten- und Zeilenumbrueche optimiert
markus schnalke <meillo@marmaro.de>
parents: 26
diff changeset
270 für \f(CW-c\fP hand\%haben. Diese Implementierungen funktionieren mit
26
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
271 Single-Byte-Encodings (z.B. US-ASCII, Latin1) korrekt, bei
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
272 Multibyte-Encodings (z.B. UTF-8) verhält sich ihr \f(CW-c\fP aber
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
273 wie \f(CW-b\fP (und \f(CW-n\fP wird ignoriert). Schließlich gibt es noch
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
274 Implementierungen, die \f(CW-b\fP und \f(CW-c\fP tatsächlich POSIX-konform
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
275 implementieren.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
276 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
277 Historische Zwei-Modi-Implementierungen sind die von
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
278 System III, System V und die aller BSDs bis in die 90er.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
279 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
280 Pseudo-Multibyte-Implementierungen bieten GNU und die
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
281 modernen NetBSDs und OpenBSDs. Man darf sich sicher fragen,
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
282 ob dort ein Schein von POSIX-Konformität gewahrt wird.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
283 Teilweise findet man erst nach genauerer Suche heraus, dass
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
284 \f(CW-c\fP und \f(CW-n\fP nicht wie erwartet funktionieren; teilweise machen es
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
285 sich die Systeme auch einfach, indem sie auf
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
286 Singlebyte-Zeichenkodierungen beharren, das aber dafür
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
287 klar darlegen:
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
288 .QP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
289 Since we don't support multi-byte characters, the \f(CW-c\fP and \f(CW-b\fP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
290 options are equivalent, and the \f(CW-n\fP option is meaningless.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
291 .[[ http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/cut/cut.c?rev=1.18&content-type=text/x-cvsweb-markup
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
292 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
293 Tatsächlich standardkonforme Implementierungen, die
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
294 Multibytes korrekt handhaben, bekommt man bei einem modernen
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
295 FreeBSD und bei den Heirloom Tools. Bei FreeBSD hat Tim Robbins
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
296 im Sommer 2004 den Zeichenmodus POSIX-konform reimplementiert
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
297 .[[ https://svnweb.freebsd.org/base?view=revision&revision=131194 .
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
298 Warum die beiden anderen großen BSDs diese Änderung nicht
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
299 übernommen haben, bleibt offen. Es scheint aber an der im
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
300 obigen Kommentar formulierten Grundausrichtung zu liegen.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
301 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
302 Wie findet man nun als Nutzer heraus, ob beim cut des eigenen
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
303 Systems Multibytes korrekt unterstützt werden? Zuerst ist
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
304 entscheidend, ob das System selbst mit einem Multibyte-Encoding
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
305 arbeitet, denn tut es das nicht, dann entsprechen sich
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
306 Zeichen und Bytes und die Frage erübrigt sich. Man kann das
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
307 herausfinden indem man sich das Locale anschaut, aber einfacher
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
308 ist es, ein typisches Mehrbytezeichen, wie z.B. einen Umlaut,
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
309 auszugeben und zu schauen ob dieses in einem oder in mehreren
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
310 Bytes kodiert ist:
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
311 .CS
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
312 $ echo ä | od -c
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
313 0000000 303 244 \\n
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
314 0000003
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
315 .CE
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
316 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
317 In diesem Fall sind es zwei Bytes: oktal 303 und 244. (Den
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
318 Zeilenumbruch fügt echo hinzu.)
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
319 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
320 Mit dem Programm iconv kann man Text explizit in bestimmte
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
321 Kodierungen konvertieren. Hier Beispiele, wie die Ausgabe
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
322 bei Latin1 und wie sie bei UTF-8 aussieht:
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
323 .CS
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
324 $ echo ä | iconv -t latin1 | od -c
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
325 0000000 344 \\n
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
326 0000002
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
327 .sp .3
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
328 $ echo ä | iconv -t utf8 | od -c
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
329 0000000 303 244 \\n
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
330 0000003
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
331 .CE
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
332 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
333 Die Ausgabe auf dem eigenen System (ohne die iconv-Konvertierung)
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
334 wird recht sicher einer dieser beiden Ausgaben entsprechen.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
335 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
336 Nun zum Test der cut-Implementierung. Hat man ein UTF-8-System,
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
337 dann sollte sich eine POSIX-konforme Implementierung folgendermaßen
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
338 verhalten:
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
339 .CS
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
340 $ echo ä | cut -c 1 | od -c
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
341 0000000 303 244 \\n
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
342 0000003
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
343 .sp .3
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
344 $ echo ä | cut -b 1 | od -c
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
345 0000000 303 \\n
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
346 0000002
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
347 .sp .3
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
348 $ echo ä | cut -b 1 -n | od -c
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
349 0000000 \\n
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
350 0000001
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
351 .CE
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
352 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
353 Bei einer Pseudo-POSIX-Implementierung ist die Ausgabe in
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
354 allen drei Fällen wie die mittlere: Es wird das erste Byte
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
355 ausgegeben.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
356
36
c584c7d907c5 Seiten- und Zeilenumbrueche optimiert
markus schnalke <meillo@marmaro.de>
parents: 26
diff changeset
357 .pl +1
26
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
358 .SH
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
359 Implementierungen
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
360 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
361 Nun ein Blick auf den Code. Betrachtet wird eine Auswahl an
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
362 Implementierungen.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
363 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
364 Für einen ersten Eindruck ist der Umfang des Quellcodes
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
365 hilfreich. Typischerweise steigt dieser über die Jahre an. Diese
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
366 Beobachtung kann hier in der Tendenz, aber nicht in jedem Fall,
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
367 bestätigt werden. Die POSIX-konforme Umsetzung des Zeichenmodus
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
368 erfordert zwangsläufig mehr Code, deshalb sind diese
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
369 Implementierungen tendenziell umfangreicher.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
370 .TS
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
371 center;
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
372 r r r l l l.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
373 SLOC Zeilen Bytes Gehört zu Dateidatum Kategorie
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
374 _
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
375 116 123 2966 System III 1980-04-11 historisch
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
376 118 125 3038 4.3BSD-UWisc 1986-11-07 historisch
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
377 200 256 5715 4.3BSD-Reno 1990-06-25 historisch
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
378 200 270 6545 NetBSD 1993-03-21 historisch
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
379 218 290 6892 OpenBSD 2008-06-27 pseudo-POSIX
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
380 224 296 6920 FreeBSD 1994-05-27 historisch
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
381 232 306 7500 NetBSD 2014-02-03 pseudo-POSIX
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
382 340 405 7423 Heirloom 2012-05-20 POSIX
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
383 382 586 14175 GNU coreutils 1992-11-08 pseudo-POSIX
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
384 391 479 10961 FreeBSD 2012-11-24 POSIX
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
385 588 830 23167 GNU coreutils 2015-05-01 pseudo-POSIX
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
386 .TE
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
387 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
388 Das Kandidatenfeld teilt sich grob in vier Gruppen: (1) Die zwei
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
389 ursprünglichen Implementierungen, die sich nur minimal
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
390 unterscheiden, mit gut 100 SLOCs. (2) Die fünf BSD-Versionen mit
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
391 gut 200 SLOCs. (3) Die zwei POSIX-konformen Programme und
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
392 die alte GNU-Version mit 340\(en390 SLOCs. Und schließlich (4) die
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
393 moderne GNU-Variante mit fast 600 SLOCs.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
394 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
395 Die Abweichung zwischen logischen Codezeilen (SLOC, ermittelt mit
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
396 SLOCcount) und der Anzahl von Zeilenumbrüchen in der Datei (\f(CWwc
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
397 -l\fP) erstreckt sich über eine Spanne von Faktor 1,06 bei den
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
398 ältesten Vertretern bis zu Faktor 1,5 bei GNU. Den größten
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
399 Einfluss darauf haben Leerzeilen, reine Kommentarzeilen und
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
400 die Größe des Lizenzblocks am Dateianfang.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
401 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
402 Betrachtet man die Abweichungen zwischen den logischen Codezeilen
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
403 und der Dateigröße (\f(CWwc -c\fP), so pendelt das Teilnehmerfeld
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
404 zwischen 25 und 30 Bytes je Anweisung. Die Heirloom-Implementierung
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
405 weicht mit nur 21 nach unten ab, die GNU-Implementierungen mit
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
406 fast 40 nach oben. Bei GNU liegt dies hauptsächlich an deren
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
407 Programmierstil, mit spezieller Einrückung und langen Bezeichnern.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
408 Ob man die Heirloom-Implementierung
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
409 .[[ http://heirloom.cvs.sourceforge.net/viewvc/heirloom/heirloom/cut/cut.c?revision=1.6&view=markup
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
410 als besonders kryptisch
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
411 oder als besonders elegant bezeichnen will, das soll der
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
412 eigenen Einschätzung des Lesers überlassen bleiben. Vor allem
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
413 der Vergleich mit einer GNU-Implementierung
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
414 .[[ http://git.savannah.gnu.org/gitweb/?p=coreutils.git;a=blob;f=src/cut.c;hb=e981643
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
415 ist eindrucksvoll.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
416 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
417 Die interne Struktur der Programmcodes (in C) ist meist ähnlich.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
418 Neben der obligatorischen main-Funktion, die die Kommandozeilenargumente
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
419 verarbeitet, gibt es im Normalfall eine Funktion, die die
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
420 Feldauswahl in eine interne Datenstruktur überführt. Desweiteren
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
421 haben fast alle Implementierungen separate Funktionen für jeden
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
422 ihrer Modi. Bei den POSIX-konformen Implementierungen
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
423 wird die \f(CW-b -n\fP-Kombination als weiterer Modus behandelt, und
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
424 damit in einer eigenen Funktion umgesetzt. Nur bei der frühen
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
425 System III-Implementierung (und seiner 4.3BSD-UWisc-Variante)
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
426 wird außer den Fehlerausgaben alles in der main-Funktion
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
427 erledigt.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
428 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
429 Cut-Implementierungen haben typischerweise zwei limitierende
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
430 Größen: Die Maximalanzahl unterstützter Felder und die maximale
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
431 Zeilenlänge. Bei System III sind beide Größen auf 512 begrenzt.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
432 4.3BSD-Reno und die BSDs der 90er Jahre haben ebenfalls fixe
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
433 Grenzen (\f(CW_BSD_LINE_MAX\fP bzw. \f(CW_POSIX2_LINE_MAX\fP). Bei modernen
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
434 FreeBSDs, NetBSDs, bei allen GNU-Implementierungen und bei
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
435 Heirloom kann sowohl die Felderanzahl als auch die maximale
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
436 Zeilenlänge beliebig groß werden; der Speicher dafür wird
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
437 dynamisch alloziiert. OpenBSD ist ein Hybrid aus fixer
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
438 Maximalzahl an Feldern und beliebiger Zeilenlänge. Die
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
439 begrenzte Felderanzahl scheint jedoch kein Praxisproblem
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
440 darzustellen, da \f(CW_POSIX2_LINE_MAX\fP mit mindestens 2048 durchaus
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
441 groß genug sein sollte.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
442
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
443 .SH
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
444 Beschreibungen
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
445 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
446 Interessant ist zudem ein Vergleich der Kurzbeschreibungen von
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
447 cut, wie sie sich in der Titelzeile der Manpages oder manchmal
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
448 am Anfang der Quellcodedatei finden. Die folgende Liste
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
449 ist grob zeitlich geordnet und nach Abstammung gruppiert:
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
450 .TS
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
451 center;
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
452 l l.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
453 CB UNIX cut out selected fields of each line of a file
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
454 System III cut out selected fields of each line of a file
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
455 System III \(dg cut and paste columns of a table (projection of a relation)
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
456 System V cut out selected fields of each line of a file
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
457 HP-UX cut out (extract) selected fields of each line of a file
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
458 .sp .3
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
459 4.3BSD-UWisc \(dg cut and paste columns of a table (projection of a relation)
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
460 4.3BSD-Reno select portions of each line of a file
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
461 NetBSD select portions of each line of a file
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
462 OpenBSD 4.6 select portions of each line of a file
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
463 FreeBSD 1.0 select portions of each line of a file
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
464 FreeBSD 10.0 cut out selected portions of each line of a file
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
465 SunOS 4.1.3 remove selected fields from each line of a file
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
466 SunOS 5.5.1 cut out selected fields of each line of a file
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
467 .sp .3
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
468 Heirloom Tools cut out selected fields of each line of a file
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
469 Heirloom Tools \(dg cut out fields of lines of files
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
470 .sp .3
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
471 GNU coreutils remove sections from each line of files
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
472 .sp .3
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
473 Minix select out columns of a file
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
474 .sp .3
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
475 Version 8 Unix rearrange columns of data
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
476 ``Unix Reader'' rearrange columns of text
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
477 .sp .3
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
478 POSIX cut out selected fields of each line of a file
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
479 .TE
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
480 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
481 Die mit `\(dg' markierten Beschreibungen sind aus dem
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
482 jeweiligen Quellcode entnommen. Der POSIX-Eintrag enthält
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
483 die Beschreibung im Standard. Der ``Unix Reader'' ist ein
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
484 rückblickendes Textdokument von Doug McIlroy, das das
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
485 Auftreten der Tools in der Geschichte des Research Unix zum
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
486 Thema hat
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
487 .[[ http://doc.cat-v.org/unix/unix-reader/contents.pdf .
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
488 Eigentlich sollte seine Beschreibung der in Version 8 Unix
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
489 entsprechen. Die Abweichung könnte ein Übertragungsfehler
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
490 oder eine nachträgliche Korrektur sein. Alle übrigen
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
491 Beschreibungen entstammen den Manpages.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
492 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
493 Oft ist mit der Zeit die POSIX-Beschreibung übernommen
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
494 oder an sie angeglichen worden, wie beispielsweise bei FreeBSD
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
495 .[[ https://svnweb.freebsd.org/base?view=revision&revision=167101 .
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
496 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
497 Interessant ist, dass die GNU coreutils seit Anbeginn vom
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
498 Entfernen von Teilen der Eingabe sprechen, wohingegen die
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
499 Kommandozeilenangabe klar ein Auswählen darstellt. Die
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
500 Worte ``cut out'' sind vielleicht auch zu missverständlich.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
501 HP-UX hat sie deshalb präzisiert.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
502 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
503 Beim Begriff, was selektiert wird, ist man sich ebenfalls
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
504 uneins. Die Einen reden von Feldern (POSIX), Andere von
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
505 Abschnitten bzw. Teilen (BSD) und wieder Andere von Spalten
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
506 (Research Unix).
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
507 .PP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
508 Die scheinbar unzutreffende Beschreibung
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
509 bei Version 8 Unix (``rearrange columns of data'') ist
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
510 dadurch zu erklären, dass die Manpage sowohl cut als auch
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
511 paste abdeckt. In ihrer Kombination können tatsächlich
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
512 Spalten umgeordnet werden.
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
513
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
514 .SH
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
515 Referenzen
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
516 .LP
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
517 .nf
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
518 ._r
3b4e53e04958 Mit troff gesetzte Version hinzugefuegt
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
519