# HG changeset patch # User markus schnalke # Date 1430679900 -7200 # Node ID 21ca59543b07536e47e2e300ccdcb496af36290f # Parent bf2ac5df006357e5036496b705ebcdc2c2ff63de Zwischenstand diff -r bf2ac5df0063 -r 21ca59543b07 cut.txt --- a/cut.txt Sun May 03 18:08:00 2015 +0200 +++ b/cut.txt Sun May 03 21:05:00 2015 +0200 @@ -103,6 +103,23 @@ Reihenfolge ausgegeben wie sie in der Eingabe waren. + +cut(1) in Version 8 Unix +``In data base parlance, it projects a relation.'' + +WP: +http://de.wikipedia.org/wiki/Projektion_(Informatik)#Projektion + + Die Projektion entspricht der Projektionsabbildung aus der + Mengenlehre und kann auch Attributbeschränkung genannt + werden. Sie extrahiert einzelne Attribute aus der + ursprünglichen Attributmenge und ist somit als eine Art + Selektion auf Spaltenebene zu verstehen, das heißt, die + Projektion blendet Spalten aus. + + + + Geschichtliches Cut erblickte 1982 mit dem Release von UNIX System III das @@ -179,6 +196,7 @@ 4.3BSD-UWisc (src) cut and paste columns of a table (projection of a relation) 4.3BSD-Reno select portions of each line of a file NetBSD select portions of each line of a file +OpenBSD 4.6 select portions of each line of a file FreeBSD 1.0 select portions of each line of a file FreeBSD 7.0 cut out selected portions of each line of a file SunOS 4.1.3 remove selected fields from each line of a file @@ -206,7 +224,7 @@ worden, wie beispielsweise bei FreeBSD zu sehen. [ https://svnweb.freebsd.org/base?view=revision&revision=167101 -Interessant ist, dass die GNU coreutils unveraendert vom +Interessant ist, dass die GNU coreutils seit Anbeginn vom Entfernen von Teilen der Eingabe sprechen, wohingegen die Kommandozeilenangabe klar ein Auswaehlen darstellt. Die Worte ``cut out'' sind vielleicht auch nicht klar genug. @@ -224,14 +242,33 @@ Codevergleich +Nun zum Blick auf den Code. Hier soll eine Auswahl an +Implementierungen etwas genauer betrachtet werden. Fuer einen +ersten Eindruck ist der Umfang des Quellcodes hilfreich. +Typischerweise steigt dieser ueber die Jahre an. Diese +Beobachtung kann hier in der Tendenz aber nicht in jedem Fall +bestaetigt werden. Die Unterstuetzung des Byte-Modus (-b) +erfordert zwangslaeufig mehr Code, deshalb ist zu erwarten, +dass +-b pseudo: openbsd, netbsd.2014, gnu* +-b real: freebsd.2014 +:-& echo '123ä56' | cut -c -6 | od -c +0000000 1 2 3 303 244 5 \n +0000007 -B-) wc -lc cut.c* | sort -n +:-& echo '123ä56' | cut -b -6 | od -c +0000000 1 2 3 303 244 5 \n +0000007 + + +$ wc -lc cut.c* | sort -n 123 2966 cut.c__system_iii.1980-04-11 125 3038 cut.c__4.3bsd-uwisc.1986-11-07 256 5715 cut.c__4.3bsd-reno.1990-06-25 270 6545 cut.c__netbsd.1993-03-21 + 290 6892 cut.c__openbsd.2008-06-27 * 296 6920 cut.c__freebsd.1994-05-27 306 7500 cut.c__netbsd.2014-02-03 * 479 10961 cut.c__freebsd.2012-11-24 * @@ -239,12 +276,13 @@ 830 23167 cut.c__gnu.2015-05-01 * 3271 80987 total -B-) c_count cut.c* | sort -n +$ c_count cut.c* | sort -n Total: 116 cut.c__system_iii.1980-04-11 118 cut.c__4.3bsd-uwisc.1986-11-07 200 cut.c__4.3bsd-reno.1990-06-25 200 cut.c__netbsd.1993-03-21 +218 cut.c__openbsd.2008-06-27 * 224 cut.c__freebsd.1994-05-27 232 cut.c__netbsd.2014-02-03 * 382 cut.c__gnu.1992-11-08 * @@ -256,9 +294,36 @@ +system_iii.1980-04-11 Release 1.5 -cut(1) in Version 8 Unix -``In data base parlance, it projects a relation.'' +SCCSIDs: + +4.3bsd-uwisc.1986-11-07 "@(#)cut.c 1.3"; +4.3bsd-reno.1990-06-25 "@(#)cut.c 5.3 (Berkeley) 6/24/90"; +netbsd.1993-03-21 "@(#)cut.c 5.4 (Berkeley) 10/30/90"; +freebsd.1994-05-27 "@(#)cut.c 8.1 (Berkeley) 6/6/93"; + +freebsd.2012-11-24 "@(#)cut.c 8.3 (Berkeley) 5/4/95"; +netbsd.2014-02-03 "@(#)cut.c 8.3 (Berkeley) 5/4/95"; + +openbsd.2008-06-27 "@(#)cut.c 8.3 (Berkeley) 5/4/95"; + "$OpenBSD: cut.c,v 1.13 2008/06/27 08:02:13 sobrado Exp $"; + +GNU + Copyright (C) 1997-2015 Free Software Foundation, Inc. + Copyright (C) 1984 David M. Ihnat +/* Written by David Ihnat. */ + +/* POSIX changes, bug fixes, long-named options, and cleanup + by David MacKenzie . + + Rewrite cut_fields and cut_bytes -- Jim Meyering. */ + +1992-11-08 +Jim Meyering + + +