comparison cut.txt @ 12:9f17c512fb5c

Zwischenstand
author markus schnalke <meillo@marmaro.de>
date Mon, 11 May 2015 17:47:00 +0200
parents 04a8a33fc48a
children bf5e41260f89
comparison
equal deleted inserted replaced
11:04a8a33fc48a 12:9f17c512fb5c
107 Faellen. 107 Faellen.
108 108
109 Awk bietet noch eine weitere Funktion, die cut missen 109 Awk bietet noch eine weitere Funktion, die cut missen
110 laesst: Das Tauschen der Feld-Reihenfolge in der Ausgabe. Bei 110 laesst: Das Tauschen der Feld-Reihenfolge in der Ausgabe. Bei
111 cut ist die Reihenfolge der Feldauswahlangabe irrelevant; ein 111 cut ist die Reihenfolge der Feldauswahlangabe irrelevant; ein
112 Feld kann selbst mehrfach angegeben werden. So gibt der Aufruf 112 Feld kann selbst mehrfach angegeben werden.
113
114 XXX 4.3BSD-Reno + *BSDs
115 * This parser is less restrictive than the Draft 9 POSIX spec.
116 * POSIX doesn't allow lists that aren't in increasing order or
117 * overlapping lists. We also handle "-3-5" although there's no
118 * real reason too.
119
120 So gibt der Aufruf
113 von `cut -c 5-8,1,4-6' die Zeichen Nummer 1, 4, 5, 6, 7 und 8 121 von `cut -c 5-8,1,4-6' die Zeichen Nummer 1, 4, 5, 6, 7 und 8
114 in genau dieser Reihenfolge aus. Die Auswahl entspricht damit 122 in genau dieser Reihenfolge aus. Die Auswahl entspricht damit
115 der Mengenlehre in der Mathematik: Jedes angegebene Feld wird 123 der Mengenlehre in der Mathematik: Jedes angegebene Feld wird
116 Teil der Ergebnismenge. Die Felder der Ergebnismenge sind 124 Teil der Ergebnismenge. Die Felder der Ergebnismenge sind
117 dabei immer gleich geordnet wie in der Eingabe. Um die Worte 125 dabei immer gleich geordnet wie in der Eingabe. Um die Worte
170 wurde folglich anhand von Arbeitsversionen des Standards 178 wurde folglich anhand von Arbeitsversionen des Standards
171 implementiert. Zweieinhalb Jahre Arbeit war immerhin schon in 179 implementiert. Zweieinhalb Jahre Arbeit war immerhin schon in
172 den Standardisierungsprozess geflossen; bis zur 180 den Standardisierungsprozess geflossen; bis zur
173 Fertigstellung sollte es aber noch weitere zwei Jahre dauern. 181 Fertigstellung sollte es aber noch weitere zwei Jahre dauern.
174 182
175 Das cut der GNU Coreutils enthaelt einen Copyrightvermerk von 183 Schaut man sich die SCCS-IDs (die vom damaligen
176 David M. Ihnat aus dem Jahr 1984. 184 Versionskontrollsystem eingefuegt wurden) in den BSD-Quellen an,
177 185 dann findet man dort Versionsnummern, die die Entstehung
178 Trotz all dieser Jahreszahlen aus den 80er Jahren gehoert cut, 186 dokumentieren:
187
188 4.3BSD-UWisc "@(#)cut.c 1.3";
189 4.3BSD-Reno "@(#)cut.c 5.3 (Berkeley) 6/24/90";
190 NetBSD "@(#)cut.c 5.4 (Berkeley) 10/30/90";
191 FreeBSD "@(#)cut.c 8.1 (Berkeley) 6/6/93";
192
193 Die neueren BSD-Versionen enthalten zwar weiterhin eine SCCS-ID, diese
194 ist aber bei Version "8.3 (Berkeley) 5/4/95" stehen geblieben. Danach
195 wurde scheinbar von SCCS auf ein anderes
196 Versionskontrollsystem gewechselt.
197 XXX
198
199 Das cut der GNU Coreutils enthaelt folgenden Copyrightvermerk:
200
201 Copyright (C) 1997-2015 Free Software Foundation, Inc.
202 Copyright (C) 1984 David M. Ihnat
203
204 Der Code hat also ziemlich alte Urspruenge. Wie aus weiteren
205 Kommentaren zu entnehmen ist, wurde der Code zuerst von David
206 MacKenzie und spaeter von Jim Meyering ueberarbeitet. Letzterer
207 hat den Code 1992 auch ins Versionkontrollsystem eingestellt.
208 Weshalb die Jahre zwischen 1992 und 1997 nicht im Copyright-Vermerk
209 auftauchen, ist unklar.
210
211 Trotz der vielen Jahreszahlen aus den 80er Jahren gehoert cut,
179 aus Sicht des urspruenglichen Unix, zu den juengeren Tools. 212 aus Sicht des urspruenglichen Unix, zu den juengeren Tools.
180 Wenn cut auch ein Jahrzehnt aelter als Linux, der Kernel, ist, 213 Wenn cut auch ein Jahrzehnt aelter als Linux, der Kernel, ist,
181 so war Unix doch schon ueber zehn Jahre alt, als cut das 214 so war Unix doch schon ueber zehn Jahre alt, als cut das
182 erste Mal auftauchte. Insbesondere gehoerte cut auch noch nicht 215 erste Mal auftauchte. Insbesondere gehoerte cut auch noch nicht
183 zu Version 7 Unix, das die Ausgangsbasis aller modernen 216 zu Version 7 Unix, das die Ausgangsbasis aller modernen
355 damit in einer eigenen Funktion umgesetzt. Nur bei der fruehen 388 damit in einer eigenen Funktion umgesetzt. Nur bei der fruehen
356 System III-Implementierung (und seiner 4.3BSD-UWisc-Variante) 389 System III-Implementierung (und seiner 4.3BSD-UWisc-Variante)
357 wird nichts aus der main-Funktion ausgelagert, ausser den 390 wird nichts aus der main-Funktion ausgelagert, ausser den
358 Fehlerausgaben. 391 Fehlerausgaben.
359 392
360 Bei System III ist die Anzahl der moeglichen Felder und damit auch 393 Bei System III ist die Anzahl der moeglichen Felder und ebenso
361 die Zeilenlaenge auf 512 begrenzt. 394 die Zeilenlaenge auf 512 begrenzt. 4.3BSD-Reno und die BSDs
362 395 der 90er Jahre haben ebenfalls fixe Grenzen (_BSD_LINE_MAX
363 Bei 4.3BSD-Reno liegt die Grenze bei _BSD_LINE_MAX 396 bzw. _POSIX2_LINE_MAX). Bei modernen FreeBSDs, NetBSDs, bei
364 397 allen GNU-Implementierungen und bei Heirloom kann sowohl
365 NetBSD 1993 _POSIX2_LINE_MAX 398 die Felderanzahl als auch die maximale Zeilenlaenge beliebig
366 399 gross werden; der Speicher dafür wird dynamisch alloziiert.
367 NetBSD 2012 dyn alloc 400 OpenBSD ist ein Hybrid aus fixer Maximalzahl an Feldern, aber
368 401 beliebiger Zeilenlaenge (fgetln). XXX
369 402
370 4.3BSD-Reno
371 * set a byte in the positions array to indicate if a field or
372 * column is to be selected; use +1, it's 1-based, not 0-based.
373 * This parser is less restrictive than the Draft 9 POSIX spec.
374 * POSIX doesn't allow lists that aren't in increasing order or
375 * overlapping lists. We also handle "-3-5" although there's no
376 * real reason too.
377
378
379
380 Schaut man sich die SCCS-IDs (die vom damaligen
381 Versionskontrollsystem eingefuegt wurden) in den BSD-Quellen an,
382 dann findet man dort Versionsnummern, die die Entwicklung
383 dokumentieren:
384
385 4.3bsd-uwisc "@(#)cut.c 1.3";
386 4.3bsd-reno "@(#)cut.c 5.3 (Berkeley) 6/24/90";
387 netbsd "@(#)cut.c 5.4 (Berkeley) 10/30/90";
388 freebsd "@(#)cut.c 8.1 (Berkeley) 6/6/93";
389
390 Die neueren BSD-Versionen enthalten zwar weiterhin eine SCCS-ID, diese
391 ist aber bei Version "8.3 (Berkeley) 5/4/95" stehen geblieben. Danach
392 wurde scheinbar von SCCS auf ein anderes
393 Versionskontrollsystem gewechselt.
394 XXX
395
396 Bei GNU befindet sich folgender Copyright-Vermerk im Code:
397
398 Copyright (C) 1997-2015 Free Software Foundation, Inc.
399 Copyright (C) 1984 David M. Ihnat
400
401 Der Code hat also ziemlich alte Urspruenge. Wie aus weiteren
402 Kommentaren zu entnehmen ist, wurde der Code zuerst von David
403 MacKenzie und spaeter von Jim Meyering ueberarbeitet. Letzterer
404 hat den Code 1992 auch ins Versionkontrollsystem eingestellt.
405 Weshalb die Jahre zwischen 1992 und 1997 nicht im Copyright-Vermerk
406 auftauchen, ist unklar.
407 403
408 404
409 Beschreibungen 405 Beschreibungen
410 406
411 Interessant ist auch ein Vergleich der Kurzbeschreibungen von 407 Interessant ist auch ein Vergleich der Kurzbeschreibungen von