Mercurial > docs > cut
annotate cut.de.ms @ 38:ec76f8926598
clarify a statement
Thanks to Francesc for the suggestion.
author | markus schnalke <meillo@marmaro.de> |
---|---|
date | Tue, 06 Oct 2015 10:43:26 +0200 |
parents | c584c7d907c5 |
children |
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 |