annotate cut.txt @ 7:21ca59543b07

Zwischenstand
author markus schnalke <meillo@marmaro.de>
date Sun, 03 May 2015 21:05:00 +0200
parents bf2ac5df0063
children 1dc4a9dca829
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
1 Das Werkzeugkaestle, #1
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
2
6
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
3 cut - cut out selected fields of each line of a file
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
4 ----------------------------------------------------
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
5 markus schnalke <meillo@marmaro.de>
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
6 2015-05
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
7
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
8
1
a3f18ccc3996 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
9 Cut ist ein klassisches Programm im Unix-Werkzeugkasten.
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
10 In keinem ordentlichen Tutorial zur Shellprogrammierung darf
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
11 es fehlen. Es ist ein schoenes Anschauungs- und Beispielobjekt
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
12 fuer's Shellscripting. Hier will ich ein wenig hinter die
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
13 Fassade schauen.
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
14
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
15
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
16 Funktionsweise
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
17
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
18 Die Funktionsbasis von cut waren urspruenglich zwei Modi, die
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
19 spaeter um einen dritten erweitert wurden. Cut schneidet
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
20 entweder bestimmte Zeichen aus den Zeilen der Eingabe oder
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
21 bestimmte durch Trennzeichen definierte Felder.
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
22
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
23 Der Zeichenmodus ist geeignet um Ausschnitte aus
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
24 Festbreitenformaten zu extrahieren. So kann man damit
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
25 beispielsweise bestimmte Zugriffsrechte aus der Ausgabe von
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
26 `ls -l' ausschneiden. Hier die Rechte des Besitzers:
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
27
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
28 $ ls -l foo | cut -c 2-4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
29 rw-
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
30
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
31 Oder die Schreibrechte des Besitzers, der Gruppe und der
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
32 Welt:
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
33
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
34 $ ls -l | cut -c 3,6,9
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
35 ww-
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
36
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
37 Mit cut lassen sich aber auch Strings kuerzen.
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
38
6
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
39 $ echo "$long" | cut -c -20
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
40
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
41 Dieser Befehl gibt die ersten maximal 20 Zeichen (jeder
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
42 Zeile) von `$long' aus.
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
43
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
44 Geht es aber nicht um die Darstellung von Zeichen, sondern um
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
45 ihre Speicherung, dann ist `-c' nicht unbedingt die passende
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
46 Option. Frueher, als US-ASCII als Zeichensatz und -kodierung
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
47 noch omnipraesent war, wurde jedes Zeichen mit genau einem
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
48 Byte gespeichert. Somit selektierte `cut -c' gleichermassen
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
49 sowohl Ausgabezeichen als auch Bytes. Mit dem Aufkommen von
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
50 Multibyte-Kodierungen (wie UTF-8) musste man sich jedoch von
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
51 dieser Annahme loesen. In diesem Zug bekam cut mit
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
52 POSIX.2-1992 die Option `-b'. Diese selektiert Bytes. Will man
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
53 also nur die ersten maximal 500 Bytes vor dem
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
54 Newline-Zeichen stehen haben (und den Rest stillschweigend
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
55 ignorieren), dann macht man das mit:
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
56
6
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
57 $ cut -b -500
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
58
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
59 Den Rest kann man sich mit `cut -b 501-' einfangen. Diese
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
60 Funktion ist insbesondere fuer POSIX wichtig, da so sicher
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
61 gestellt werden kann, dass Textdateien keine beliebig
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
62 langen Zeilen haben.
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
63 [ http://pubs.opengroup.org/onlinepubs/9699919799/utilities/cut.html#tag_20_28_17
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
64
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
65 Neben dem Zeichen- bzw. Byte-Modus bietet cut noch den
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
66 interessanteren Feld-Modus, den man mit `-f' einleitet. Mit ihm
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
67 koennen Felder ausgewaehlt werden. Das Trennzeichen (per
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
68 Default der Tab) kann mit `-d' geaendert werden.
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
69
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
70 Der typische Anwendungsfall fuer den Feld-Modus. Ist die
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
71 Extraktion von Information aus der passwd-Datei. So z.B. der
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
72 Username, die User-ID und das Homeverzeichnis:
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
73
6
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
74 $ cut -d: -f1,3,6 /etc/passwd
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
75
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
76 (Die Argumente fuer die Optionen koennen bei cut uebrigens
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
77 direkt angehaengt oder mit Whitespace abgetrennt folgen.)
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
78
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
79
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
80 Dieser Feld-Modus ist fuer einfache tabellarische Dateien,
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
81 wie eben die passwd, gut geeignet. Er kommt aber schnell an
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
82 seine Grenzen. Gerade der uebliche Fall, dass an Whitespace
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
83 in Felder geteilt werden soll, wird damit nicht abgedeckt.
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
84 Der Delimiter kann nur genau ein Zeichen sein. Es kann also
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
85 nicht sowohl an Leerzeichen als auch an Tabs getrennt werden.
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
86 Auch unterteilt cut an jedem Trennzeichen. Zwei aneinander
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
87 stehende Trennzeichen fuehren zu einem leeren Feld. Dieses
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
88 Verhalten widerspricht den Erwartungen fuer eine Datei mit
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
89 Whitespace-getrennten Feldern. (Manche Implementierungen von
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
90 cut, z.B. die von FreeBSD, haben deshalb Erweiterungen, die
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
91 das gewuenschte Verhalten fuer Whitespace-getrennte Felder
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
92 bieten.) Ansonsten, d.h. wenn man portabel bleiben will,
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
93 hilft awk.
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
94
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
95 Awk bietet noch eine weitere Funktion, die cut missen
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
96 laesst: Das Tauschen der Felder-Reihenfolge. Bei cut ist die
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
97 Reihenfolge der Feldauswahl irrelevant; ein Feld kann selbst
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
98 mehrfach angegeben werden. Der Aufruf von `cut -c 5-8,1,4-6'
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
99 gibt z.B. die Zeichen Nummer 1, 4, 5, 6, 7 und 8 aus. Die
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
100 Auswahl aehnelt damit der Mengenlehre in der Mathematik:
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
101 Jedes angegebene Feld soll in der Ergebnismenge sein. Die
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
102 Felder der Ergebnismenge werden dabei immer in der gleichen
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
103 Reihenfolge ausgegeben wie sie in der Eingabe waren.
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
104
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
105
7
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
106
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
107 cut(1) in Version 8 Unix
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
108 ``In data base parlance, it projects a relation.''
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
109
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
110 WP:
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
111 http://de.wikipedia.org/wiki/Projektion_(Informatik)#Projektion
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
112
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
113 Die Projektion entspricht der Projektionsabbildung aus der
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
114 Mengenlehre und kann auch Attributbeschränkung genannt
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
115 werden. Sie extrahiert einzelne Attribute aus der
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
116 ursprünglichen Attributmenge und ist somit als eine Art
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
117 Selektion auf Spaltenebene zu verstehen, das heißt, die
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
118 Projektion blendet Spalten aus.
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
119
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
120
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
121
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
122
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
123 Geschichtliches
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
124
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
125 Cut erblickte 1982 mit dem Release von UNIX System III das
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
126 Licht der oeffentlichen Welt. Wenn man die Quellen von System
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
127 III durchforstet, findet man die Quellcodedatei cut.c mit dem
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
128 Zeitstempel 1980-04-11.
1
a3f18ccc3996 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
129 [ http://minnie.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/cmd
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
130 Das ist die aelteste Manifestation des Programms, die ich
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
131 aufstoebern konnte.
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
132
1
a3f18ccc3996 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
133 Aber werfen wir doch einen Blick auf die BSD-Linie: Dort ist mein
a3f18ccc3996 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
134 fruehester Fund ein cut.c mit dem Datum 1986-11-07 im Code der
6
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
135 Spezialversion 4.3BSD-UWisc,
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
136 [ http://gunkies.org/wiki/4.3_BSD_NFS_Wisconsin_Unix
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
137 die im Januar 1987 veroeffentlicht wurde.
1
a3f18ccc3996 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
138 [ http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-UWisc/src/usr.bin/cut
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
139 Die Datei unterscheidet sich nur minimal von der aus System III.
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
140 Im bekannteren 4.3BSD-Tahoe (1988) taucht cut aber nicht auf.
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
141 Im darauf folgenden 4.3BSD-Reno (1990) gibt es wiederum ein
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
142 cut ... ein von Adam S. Moskowitz und Marciano Pitargue neu
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
143 implementiertes cut, das 1989 in BSD aufgenommen wurde.
1
a3f18ccc3996 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
144 [ http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-Reno/src/usr.bin/cut
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
145 Seine Manpage
1
a3f18ccc3996 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
146 [ http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-Reno/src/usr.bin/cut/cut.1
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
147 erwaehnt bereits die erwartete Konformitaet mit POSIX.2.
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
148 Nun sollte man wissen, dass POSIX.2 erst im September
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
149 1992 veroeffentlicht wurde, gut zwei Jahren *nachdem* die
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
150 Manpage und das Programm geschrieben wurden. Dieses cut
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
151 wurde also anhand von Entwuerfen des Standards
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
152 implementiert. Zweieinhalb Jahre Arbeit war immerhin schon in
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
153 den Standardisierungsprozess geflossen; bis zur
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
154 Fertigstellung sollte es noch weitere zwei Jahre dauern.
0
5efb052a0d9e Zwischenstand
markus schnalke <meillo@marmaro.de>
parents:
diff changeset
155
1
a3f18ccc3996 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
156 Trotz all dieser Jahreszahlen aus den 80er Jahren gehoert cut
a3f18ccc3996 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
157 aus Sicht des urspruenglichen Unix zu den juengeren Tools.
a3f18ccc3996 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
158 Wenn cut auch ein Jahrzehnt aelter als Linux, der Kernel, ist,
4
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
159 so war Unix doch schon ueber zehn Jahre alt, als cut das
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
160 erste Mal auftauchte. Insbesondere gehoerte cut noch nicht
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
161 zu Version 7 Unix, das die Ausgangsbasis aller modernen
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
162 Unix-Systeme darstellt. Die weit komplexeren Programme sed
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
163 und awk waren dort schon vertreten. Man muss sich also
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
164 fragen, warum cut ueberhaupt noch entwickelt wurde, wo es
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
165 schon zwei Programme gab, die die Aufgabe von cut bereits
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
166 abdeckten. Ein Argument fuer cut ist seine Kompaktheit und
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
167 die damit verbundene Geschwindigkeit gegenueber dem damals
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
168 traegen awk. Diese schlanke Gestalt ist es auch, die der Unix
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
169 Philosopie entspricht: Mache eine Aufgabe und die richtig!
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
170 So bewaehrte sich cut. Es wurde in andere Unix Varianten
d0b61c2bd25c Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 3
diff changeset
171 uebernommen, standardisiert und ist heutzutage ueberall
1
a3f18ccc3996 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
172 anzutreffen.
a3f18ccc3996 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
173
5
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
174 Die urspruengliche Variante (ohne -b) taucht schon 1985 in
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
175 der System V Interface Definition, einer wichtigen formalen
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
176 Beschreibung von UNIX System V, und in allen relevanten
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
177 Standards seither auf. Mit POSIX.2 im Jahre 1992 wurde cut
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
178 zum ersten Mal in der heutigen Form (mit -b) standardisiert.
2
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
179
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
180
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
181 Beschreibungen
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
182
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
183 Interessant ist ein Vergleich der Kurzbeschreibungen von cut,
3
7cd149433a96 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 2
diff changeset
184 wie sie sich in der Titelzeile von Manpages oder manchmal auch
5
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
185 am Anfang der Quellcodedatei finden.
2
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
186
5
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
187 Die folgende Liste ist grob nach Zeit geordnet und nach
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
188 Abstammung gruppiert:
3
7cd149433a96 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 2
diff changeset
189
7cd149433a96 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 2
diff changeset
190
2
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
191 System III cut out selected fields of each line of a file
3
7cd149433a96 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 2
diff changeset
192 System III (src) cut and paste columns of a table (projection of a relation)
2
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
193 System V cut out selected fields of each line of a file
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
194 HP-UX cut out (extract) selected fields of each line of a file
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
195
3
7cd149433a96 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 2
diff changeset
196 4.3BSD-UWisc (src) cut and paste columns of a table (projection of a relation)
2
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
197 4.3BSD-Reno select portions of each line of a file
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
198 NetBSD select portions of each line of a file
7
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
199 OpenBSD 4.6 select portions of each line of a file
2
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
200 FreeBSD 1.0 select portions of each line of a file
3
7cd149433a96 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 2
diff changeset
201 FreeBSD 7.0 cut out selected portions of each line of a file
2
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
202 SunOS 4.1.3 remove selected fields from each line of a file
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
203 SunOS 5.5.1 cut out selected fields of each line of a file
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
204
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
205 POSIX cut out selected fields of each line of a file
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
206
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
207 GNU coreutils remove sections from each line of files
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
208
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
209 Minix select out columns of a file
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
210
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
211 Version 8 Unix rearrange columns of data
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
212 ``Unix Reader'' rearrange columns of text
1
a3f18ccc3996 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
213
a3f18ccc3996 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
214
5
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
215 Die zwei mit ``(src)'' markierten Beschreibungen sind aus
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
216 dem Quellcode entnommen, und verdeutlichen den Codetransfer.
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
217 POSIX ist ein Set von Standards, keine Implementierung. Der
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
218 ``Unix Reader'' ist ein rueckblickendes Textdokument von
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
219 Doug McIlroy, das das Auftreten von Tools in der Geschichte
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
220 des Research Unix zum Thema hat. Alle uebrigen Beschreibungen
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
221 entstammen den Manpages.
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
222
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
223 Zumeist ist mit der Zeit die POSIX-Beschreibung uebernommen
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
224 worden, wie beispielsweise bei FreeBSD zu sehen.
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
225 [ https://svnweb.freebsd.org/base?view=revision&revision=167101
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
226
7
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
227 Interessant ist, dass die GNU coreutils seit Anbeginn vom
5
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
228 Entfernen von Teilen der Eingabe sprechen, wohingegen die
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
229 Kommandozeilenangabe klar ein Auswaehlen darstellt. Die
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
230 Worte ``cut out'' sind vielleicht auch nicht klar genug.
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
231 HP-UX hat sie deshalb praezisiert.
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
232
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
233 Auch beim Begriff, was denn nun selektiert wird, ist man sich
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
234 uneins. Die einen reden von Feldern (POSIX), andere von
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
235 Abschnitten bzw. Teilen (BSD) und wieder andere von Spalten
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
236 (Research Unix). Ironischerweise leistet sich gerade Version
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
237 8 Unix, das eigentlich um eine sehr treffende Weltsicht
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
238 bemueht ist, mit ``rearrange columns of data'' die
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
239 unzutreffendste der Beschreibungen.
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
240
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
241
1
a3f18ccc3996 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 0
diff changeset
242
3
7cd149433a96 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 2
diff changeset
243 Codevergleich
2
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
244
7
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
245 Nun zum Blick auf den Code. Hier soll eine Auswahl an
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
246 Implementierungen etwas genauer betrachtet werden. Fuer einen
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
247 ersten Eindruck ist der Umfang des Quellcodes hilfreich.
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
248 Typischerweise steigt dieser ueber die Jahre an. Diese
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
249 Beobachtung kann hier in der Tendenz aber nicht in jedem Fall
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
250 bestaetigt werden. Die Unterstuetzung des Byte-Modus (-b)
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
251 erfordert zwangslaeufig mehr Code, deshalb ist zu erwarten,
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
252 dass
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
253
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
254 -b pseudo: openbsd, netbsd.2014, gnu*
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
255 -b real: freebsd.2014
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
256
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
257 :-& echo '123ä56' | cut -c -6 | od -c
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
258 0000000 1 2 3 303 244 5 \n
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
259 0000007
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
260
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
261 :-& echo '123ä56' | cut -b -6 | od -c
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
262 0000000 1 2 3 303 244 5 \n
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
263 0000007
2
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
264
3659d2502d61 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 1
diff changeset
265
7
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
266 $ wc -lc cut.c* | sort -n
6
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
267 123 2966 cut.c__system_iii.1980-04-11
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
268 125 3038 cut.c__4.3bsd-uwisc.1986-11-07
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
269 256 5715 cut.c__4.3bsd-reno.1990-06-25
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
270 270 6545 cut.c__netbsd.1993-03-21
7
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
271 290 6892 cut.c__openbsd.2008-06-27 *
6
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
272 296 6920 cut.c__freebsd.1994-05-27
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
273 306 7500 cut.c__netbsd.2014-02-03 *
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
274 479 10961 cut.c__freebsd.2012-11-24 *
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
275 586 14175 cut.c__gnu.1992-11-08 *
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
276 830 23167 cut.c__gnu.2015-05-01 *
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
277 3271 80987 total
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
278
7
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
279 $ c_count cut.c* | sort -n
6
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
280 Total:
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
281 116 cut.c__system_iii.1980-04-11
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
282 118 cut.c__4.3bsd-uwisc.1986-11-07
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
283 200 cut.c__4.3bsd-reno.1990-06-25
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
284 200 cut.c__netbsd.1993-03-21
7
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
285 218 cut.c__openbsd.2008-06-27 *
6
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
286 224 cut.c__freebsd.1994-05-27
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
287 232 cut.c__netbsd.2014-02-03 *
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
288 382 cut.c__gnu.1992-11-08 *
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
289 391 cut.c__freebsd.2012-11-24 *
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
290 588 cut.c__gnu.2015-05-01 *
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
291 2451
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
292
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
293 (* == version hat -b)
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
294
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
295
5
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
296
7
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
297 system_iii.1980-04-11 Release 1.5
5
00097c80a853 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 4
diff changeset
298
7
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
299 SCCSIDs:
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
300
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
301 4.3bsd-uwisc.1986-11-07 "@(#)cut.c 1.3";
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
302 4.3bsd-reno.1990-06-25 "@(#)cut.c 5.3 (Berkeley) 6/24/90";
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
303 netbsd.1993-03-21 "@(#)cut.c 5.4 (Berkeley) 10/30/90";
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
304 freebsd.1994-05-27 "@(#)cut.c 8.1 (Berkeley) 6/6/93";
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
305
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
306 freebsd.2012-11-24 "@(#)cut.c 8.3 (Berkeley) 5/4/95";
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
307 netbsd.2014-02-03 "@(#)cut.c 8.3 (Berkeley) 5/4/95";
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
308
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
309 openbsd.2008-06-27 "@(#)cut.c 8.3 (Berkeley) 5/4/95";
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
310 "$OpenBSD: cut.c,v 1.13 2008/06/27 08:02:13 sobrado Exp $";
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
311
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
312 GNU
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
313 Copyright (C) 1997-2015 Free Software Foundation, Inc.
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
314 Copyright (C) 1984 David M. Ihnat
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
315 /* Written by David Ihnat. */
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
316
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
317 /* POSIX changes, bug fixes, long-named options, and cleanup
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
318 by David MacKenzie <djm@gnu.ai.mit.edu>.
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
319
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
320 Rewrite cut_fields and cut_bytes -- Jim Meyering. */
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
321
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
322 1992-11-08
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
323 Jim Meyering
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
324
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
325
21ca59543b07 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 6
diff changeset
326
6
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
327
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
328
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
329
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
330 Autoreninfo
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
331
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
332 Markus Schnalke interessiert sich fuer die Hintergruende
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
333 von Unix und seinen Werkzeugen. Fuer die Erarbeitung dieses
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
334 Textes wurde er regelrecht zum Historiker.
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
335
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
336
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
337 Lizenz
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
338 CC0 (und kann damit auch unter CC BY-SA 4.0 Unported
bf2ac5df0063 Zwischenstand
markus schnalke <meillo@marmaro.de>
parents: 5
diff changeset
339 veroeffentlicht werden)