comparison cut.txt @ 7:21ca59543b07

Zwischenstand
author markus schnalke <meillo@marmaro.de>
date Sun, 03 May 2015 21:05:00 +0200
parents bf2ac5df0063
children 1dc4a9dca829
comparison
equal deleted inserted replaced
6:bf2ac5df0063 7:21ca59543b07
99 gibt z.B. die Zeichen Nummer 1, 4, 5, 6, 7 und 8 aus. Die 99 gibt z.B. die Zeichen Nummer 1, 4, 5, 6, 7 und 8 aus. Die
100 Auswahl aehnelt damit der Mengenlehre in der Mathematik: 100 Auswahl aehnelt damit der Mengenlehre in der Mathematik:
101 Jedes angegebene Feld soll in der Ergebnismenge sein. Die 101 Jedes angegebene Feld soll in der Ergebnismenge sein. Die
102 Felder der Ergebnismenge werden dabei immer in der gleichen 102 Felder der Ergebnismenge werden dabei immer in der gleichen
103 Reihenfolge ausgegeben wie sie in der Eingabe waren. 103 Reihenfolge ausgegeben wie sie in der Eingabe waren.
104
105
106
107 cut(1) in Version 8 Unix
108 ``In data base parlance, it projects a relation.''
109
110 WP:
111 http://de.wikipedia.org/wiki/Projektion_(Informatik)#Projektion
112
113 Die Projektion entspricht der Projektionsabbildung aus der
114 Mengenlehre und kann auch Attributbeschränkung genannt
115 werden. Sie extrahiert einzelne Attribute aus der
116 ursprünglichen Attributmenge und ist somit als eine Art
117 Selektion auf Spaltenebene zu verstehen, das heißt, die
118 Projektion blendet Spalten aus.
119
120
104 121
105 122
106 Geschichtliches 123 Geschichtliches
107 124
108 Cut erblickte 1982 mit dem Release von UNIX System III das 125 Cut erblickte 1982 mit dem Release von UNIX System III das
177 HP-UX cut out (extract) selected fields of each line of a file 194 HP-UX cut out (extract) selected fields of each line of a file
178 195
179 4.3BSD-UWisc (src) cut and paste columns of a table (projection of a relation) 196 4.3BSD-UWisc (src) cut and paste columns of a table (projection of a relation)
180 4.3BSD-Reno select portions of each line of a file 197 4.3BSD-Reno select portions of each line of a file
181 NetBSD select portions of each line of a file 198 NetBSD select portions of each line of a file
199 OpenBSD 4.6 select portions of each line of a file
182 FreeBSD 1.0 select portions of each line of a file 200 FreeBSD 1.0 select portions of each line of a file
183 FreeBSD 7.0 cut out selected portions of each line of a file 201 FreeBSD 7.0 cut out selected portions of each line of a file
184 SunOS 4.1.3 remove selected fields from each line of a file 202 SunOS 4.1.3 remove selected fields from each line of a file
185 SunOS 5.5.1 cut out selected fields of each line of a file 203 SunOS 5.5.1 cut out selected fields of each line of a file
186 204
204 222
205 Zumeist ist mit der Zeit die POSIX-Beschreibung uebernommen 223 Zumeist ist mit der Zeit die POSIX-Beschreibung uebernommen
206 worden, wie beispielsweise bei FreeBSD zu sehen. 224 worden, wie beispielsweise bei FreeBSD zu sehen.
207 [ https://svnweb.freebsd.org/base?view=revision&revision=167101 225 [ https://svnweb.freebsd.org/base?view=revision&revision=167101
208 226
209 Interessant ist, dass die GNU coreutils unveraendert vom 227 Interessant ist, dass die GNU coreutils seit Anbeginn vom
210 Entfernen von Teilen der Eingabe sprechen, wohingegen die 228 Entfernen von Teilen der Eingabe sprechen, wohingegen die
211 Kommandozeilenangabe klar ein Auswaehlen darstellt. Die 229 Kommandozeilenangabe klar ein Auswaehlen darstellt. Die
212 Worte ``cut out'' sind vielleicht auch nicht klar genug. 230 Worte ``cut out'' sind vielleicht auch nicht klar genug.
213 HP-UX hat sie deshalb praezisiert. 231 HP-UX hat sie deshalb praezisiert.
214 232
222 240
223 241
224 242
225 Codevergleich 243 Codevergleich
226 244
227 245 Nun zum Blick auf den Code. Hier soll eine Auswahl an
228 246 Implementierungen etwas genauer betrachtet werden. Fuer einen
229 247 ersten Eindruck ist der Umfang des Quellcodes hilfreich.
230 B-) wc -lc cut.c* | sort -n 248 Typischerweise steigt dieser ueber die Jahre an. Diese
249 Beobachtung kann hier in der Tendenz aber nicht in jedem Fall
250 bestaetigt werden. Die Unterstuetzung des Byte-Modus (-b)
251 erfordert zwangslaeufig mehr Code, deshalb ist zu erwarten,
252 dass
253
254 -b pseudo: openbsd, netbsd.2014, gnu*
255 -b real: freebsd.2014
256
257 :-& echo '123ä56' | cut -c -6 | od -c
258 0000000 1 2 3 303 244 5 \n
259 0000007
260
261 :-& echo '123ä56' | cut -b -6 | od -c
262 0000000 1 2 3 303 244 5 \n
263 0000007
264
265
266 $ wc -lc cut.c* | sort -n
231 123 2966 cut.c__system_iii.1980-04-11 267 123 2966 cut.c__system_iii.1980-04-11
232 125 3038 cut.c__4.3bsd-uwisc.1986-11-07 268 125 3038 cut.c__4.3bsd-uwisc.1986-11-07
233 256 5715 cut.c__4.3bsd-reno.1990-06-25 269 256 5715 cut.c__4.3bsd-reno.1990-06-25
234 270 6545 cut.c__netbsd.1993-03-21 270 270 6545 cut.c__netbsd.1993-03-21
271 290 6892 cut.c__openbsd.2008-06-27 *
235 296 6920 cut.c__freebsd.1994-05-27 272 296 6920 cut.c__freebsd.1994-05-27
236 306 7500 cut.c__netbsd.2014-02-03 * 273 306 7500 cut.c__netbsd.2014-02-03 *
237 479 10961 cut.c__freebsd.2012-11-24 * 274 479 10961 cut.c__freebsd.2012-11-24 *
238 586 14175 cut.c__gnu.1992-11-08 * 275 586 14175 cut.c__gnu.1992-11-08 *
239 830 23167 cut.c__gnu.2015-05-01 * 276 830 23167 cut.c__gnu.2015-05-01 *
240 3271 80987 total 277 3271 80987 total
241 278
242 B-) c_count cut.c* | sort -n 279 $ c_count cut.c* | sort -n
243 Total: 280 Total:
244 116 cut.c__system_iii.1980-04-11 281 116 cut.c__system_iii.1980-04-11
245 118 cut.c__4.3bsd-uwisc.1986-11-07 282 118 cut.c__4.3bsd-uwisc.1986-11-07
246 200 cut.c__4.3bsd-reno.1990-06-25 283 200 cut.c__4.3bsd-reno.1990-06-25
247 200 cut.c__netbsd.1993-03-21 284 200 cut.c__netbsd.1993-03-21
285 218 cut.c__openbsd.2008-06-27 *
248 224 cut.c__freebsd.1994-05-27 286 224 cut.c__freebsd.1994-05-27
249 232 cut.c__netbsd.2014-02-03 * 287 232 cut.c__netbsd.2014-02-03 *
250 382 cut.c__gnu.1992-11-08 * 288 382 cut.c__gnu.1992-11-08 *
251 391 cut.c__freebsd.2012-11-24 * 289 391 cut.c__freebsd.2012-11-24 *
252 588 cut.c__gnu.2015-05-01 * 290 588 cut.c__gnu.2015-05-01 *
254 292
255 (* == version hat -b) 293 (* == version hat -b)
256 294
257 295
258 296
259 297 system_iii.1980-04-11 Release 1.5
260 cut(1) in Version 8 Unix 298
261 ``In data base parlance, it projects a relation.'' 299 SCCSIDs:
300
301 4.3bsd-uwisc.1986-11-07 "@(#)cut.c 1.3";
302 4.3bsd-reno.1990-06-25 "@(#)cut.c 5.3 (Berkeley) 6/24/90";
303 netbsd.1993-03-21 "@(#)cut.c 5.4 (Berkeley) 10/30/90";
304 freebsd.1994-05-27 "@(#)cut.c 8.1 (Berkeley) 6/6/93";
305
306 freebsd.2012-11-24 "@(#)cut.c 8.3 (Berkeley) 5/4/95";
307 netbsd.2014-02-03 "@(#)cut.c 8.3 (Berkeley) 5/4/95";
308
309 openbsd.2008-06-27 "@(#)cut.c 8.3 (Berkeley) 5/4/95";
310 "$OpenBSD: cut.c,v 1.13 2008/06/27 08:02:13 sobrado Exp $";
311
312 GNU
313 Copyright (C) 1997-2015 Free Software Foundation, Inc.
314 Copyright (C) 1984 David M. Ihnat
315 /* Written by David Ihnat. */
316
317 /* POSIX changes, bug fixes, long-named options, and cleanup
318 by David MacKenzie <djm@gnu.ai.mit.edu>.
319
320 Rewrite cut_fields and cut_bytes -- Jim Meyering. */
321
322 1992-11-08
323 Jim Meyering
324
325
326
262 327
263 328
264 329
265 Autoreninfo 330 Autoreninfo
266 331