docs/cut

changeset 15:77d1f55bba08

Weitere Ueberarbeitungen
author markus schnalke <meillo@marmaro.de>
date Tue, 12 May 2015 07:35:33 +0200
parents 21ad1c1548c4
children 4d8196c836d8
files cut.txt
diffstat 1 files changed, 41 insertions(+), 43 deletions(-) [+]
line diff
     1.1 --- a/cut.txt	Tue May 12 06:46:59 2015 +0200
     1.2 +++ b/cut.txt	Tue May 12 07:35:33 2015 +0200
     1.3 @@ -1,5 +1,3 @@
     1.4 -Das Werkzeugkaestle, #1
     1.5 -
     1.6  cut - cut out selected fields of each line of a file
     1.7  ----------------------------------------------------
     1.8  markus schnalke <meillo@marmaro.de>
     1.9 @@ -25,6 +23,9 @@
    1.10  Zugriffsrechte aus der Ausgabe von `ls -l' ausschneiden, in
    1.11  diesem Beispiel die Rechte des Besitzers:
    1.12  
    1.13 +	$ ls -l foo
    1.14 +	-rw-rw-r-- 1 meillo users 0 May 12 07:32 foo
    1.15 +
    1.16  	$ ls -l foo | cut -c 2-4
    1.17  	rw-
    1.18  
    1.19 @@ -41,7 +42,7 @@
    1.20  	1234567890
    1.21  
    1.22  Dieser Befehl gibt die ersten maximal 10 Zeichen von
    1.23 -`$long' aus. (Alternativ kann man hierfuer auch `printf
    1.24 +`$long' aus. (Alternativ kann man hierfuer `printf
    1.25  "%.10s\n" "$long"' verwenden.)
    1.26  
    1.27  Geht es aber nicht um die Darstellung von Zeichen, sondern um
    1.28 @@ -109,16 +110,7 @@
    1.29  Awk bietet noch eine weitere Funktion, die cut missen
    1.30  laesst: Das Tauschen der Feld-Reihenfolge in der Ausgabe. Bei
    1.31  cut ist die Reihenfolge der Feldauswahlangabe irrelevant; ein
    1.32 -Feld kann selbst mehrfach angegeben werden.
    1.33 -
    1.34 -XXX
    1.35 -4.3BSD-Reno + *BSDs
    1.36 -         * This parser is less restrictive than the Draft 9 POSIX spec.
    1.37 -         * POSIX doesn't allow lists that aren't in increasing order or
    1.38 -         * overlapping lists.  We also handle "-3-5" although there's no
    1.39 -         * real reason too.
    1.40 -
    1.41 -So gibt der Aufruf
    1.42 +Feld kann selbst mehrfach angegeben werden. So gibt der Aufruf
    1.43  von `cut -c 5-8,1,4-6' die Zeichen Nummer 1, 4, 5, 6, 7 und 8
    1.44  in genau dieser Reihenfolge aus. Die Auswahl entspricht damit
    1.45  der Mengenlehre in der Mathematik: Jedes angegebene Feld wird
    1.46 @@ -172,31 +164,29 @@
    1.47  Seine Manpage
    1.48  [ http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-Reno/src/usr.bin/cut/cut.1
    1.49  erwaehnt bereits die erwartete Konformitaet mit POSIX.2.
    1.50 -XXX 2 oder 3 modi?
    1.51 +XXX 2 oder 3 modi? Draft 9: 2 modi?  Draft 11.2 hat 3 modi!
    1.52  Nun sollte man wissen, dass POSIX.2 erst im September
    1.53  1992 veroeffentlicht wurde, also gut zwei Jahren nachdem die
    1.54  Manpage und das Programm geschrieben wurden. Das Programm
    1.55  wurde folglich anhand von Arbeitsversionen des Standards
    1.56 -implementiert. Zweieinhalb Jahre Arbeit war immerhin schon in
    1.57 -den Standardisierungsprozess geflossen; bis zur
    1.58 -Fertigstellung sollte es aber noch weitere zwei Jahre dauern.
    1.59 +implementiert. Ein Blick in den Code bekraeftigt diese Vermutung.
    1.60 +In der Funktion zum parsen der Feldauswahlliste findet sich
    1.61 +dieser Kommentar:
    1.62  
    1.63 -XXX
    1.64 -Schaut man sich die SCCS-IDs (die vom damaligen
    1.65 -Versionskontrollsystem eingefuegt wurden) in den BSD-Quellen an,
    1.66 -dann findet man dort Versionsnummern, die die Entstehung
    1.67 -dokumentieren:
    1.68 +	This parser is less restrictive than the Draft 9 POSIX spec.
    1.69 +	POSIX doesn't allow lists that aren't in increasing order or
    1.70 +	overlapping lists.
    1.71  
    1.72 -	4.3BSD-UWisc	"@(#)cut.c      1.3";
    1.73 -	4.3BSD-Reno	"@(#)cut.c      5.3 (Berkeley) 6/24/90";
    1.74 -	NetBSD		"@(#)cut.c      5.4 (Berkeley) 10/30/90";
    1.75 -	FreeBSD		"@(#)cut.c      8.1 (Berkeley) 6/6/93";
    1.76 +Im Draft 11.2 (1991-09) fordert POSIX diese Flexibilitaet bereits
    1.77 +ein:
    1.78  
    1.79 -Die neueren BSD-Versionen enthalten zwar weiterhin eine SCCS-ID, diese
    1.80 -ist aber bei Version "8.3 (Berkeley) 5/4/95" stehen geblieben. Danach
    1.81 -wurde scheinbar von SCCS auf ein anderes
    1.82 -Versionskontrollsystem gewechselt.
    1.83 -XXX
    1.84 +	The elements in list can be repeated, can overlap, and can
    1.85 +	be specified in any order.
    1.86 +
    1.87 +Die Versionsnummern und Aenderungsdatums der aelteren
    1.88 +BSD-Implementierungen kann man aus den SCCS-IDs (die vom
    1.89 +damaligen Versionskontrollsystem in den Code eingefuegt wurden)
    1.90 +ablesen. So z.B. bei 4.3BSD-Reno: ``5.3 (Berkeley) 6/24/90''.
    1.91  
    1.92  Das cut der GNU Coreutils enthaelt folgenden Copyrightvermerk:
    1.93  
    1.94 @@ -233,7 +223,7 @@
    1.95  anschliessend in allen relevanten Standards auf. Mit POSIX.2
    1.96  im Jahre 1992 wurde cut zum ersten Mal in der heutigen Form
    1.97  (mit -b) standardisiert.
    1.98 -XXX sicher? s.o.
    1.99 +XXX sicher?
   1.100  
   1.101  
   1.102  Multibyte-Unterstuetzung
   1.103 @@ -256,14 +246,18 @@
   1.104  System III, System V und die aller BSDs bis in die 90er.
   1.105  
   1.106  Pseudo-Multibyte-Implementierungen bieten GNU und die
   1.107 -modernen NetBSDs und OpenBSDs. Wie sehr dort ein Schein von
   1.108 -POSIX-Konformitaet gewahrt wird, ist unterschiedlich. Nicht
   1.109 -immer findet man klare Aussagen wie diese:
   1.110 +modernen NetBSDs und OpenBSDs. Man darf sich durchaus fragen,
   1.111 +ob dort ein Schein von POSIX-Konformitaet gewahrt wird.
   1.112 +Teilweise findet man erst nach genauerer Suche heraus, dass
   1.113 +-c und -n nicht wie erwartet funktionieren; teilweise machen es
   1.114 +sich die System auch einfach, indem sie auf
   1.115 +Singlebyte-Zeichenkodierungen beharren, das aber dafuer klar
   1.116 +darlegen:
   1.117  
   1.118 -	/* Since we don't support multi-byte characters, the -c and -b 
   1.119 -	   options are equivalent, and the -n option is meaningless. */
   1.120 +	Since we don't support multi-byte characters, the -c and -b
   1.121 +	options are equivalent, and the -n option is meaningless.
   1.122  
   1.123 -[ XXX
   1.124 +[ openbsd XXX
   1.125  
   1.126  Tatsaechlich standardkonforme Implementierungen, die
   1.127  Multibytes korrekt handhaben, bekommt man bei einem modernen
   1.128 @@ -392,16 +386,20 @@
   1.129  wird ausser den Fehlerausgaben nichts aus der main-Funktion
   1.130  ausgelagert.
   1.131  
   1.132 -XXX
   1.133 -Bei System III ist die Anzahl der moeglichen Felder und ebenso
   1.134 -die Zeilenlaenge auf 512 begrenzt. 4.3BSD-Reno und die BSDs
   1.135 -der 90er Jahre haben ebenfalls fixe Grenzen (_BSD_LINE_MAX
   1.136 +Cut-Implementierungen haben typischerweise zwei limitierende
   1.137 +Groessen: Die Maximalanzahl unterstuetzter Felder und die maximale
   1.138 +Zeilenlaenge. Bei System III ist die Anzahl der moeglichen Felder
   1.139 +und ebenso die Zeilenlaenge auf 512 begrenzt. 4.3BSD-Reno und die
   1.140 +BSDs der 90er Jahre haben ebenfalls fixe Grenzen (_BSD_LINE_MAX
   1.141  bzw. _POSIX2_LINE_MAX). Bei modernen FreeBSDs, NetBSDs, bei
   1.142  allen GNU-Implementierungen und bei Heirloom kann sowohl
   1.143  die Felderanzahl als auch die maximale Zeilenlaenge beliebig
   1.144  gross werden; der Speicher dafür wird dynamisch alloziiert.
   1.145  OpenBSD ist ein Hybrid aus fixer Maximalzahl an Feldern, aber
   1.146 -beliebiger Zeilenlaenge (fgetln). XXX
   1.147 +beliebiger Zeilenlaenge. XXX fgetln
   1.148 +Die begrenzte Felderanzahl scheint jedeoch kein praktisches
   1.149 +Problem darzustellen, da _POSIX2_LINE_MAX mit mindestens 2048
   1.150 +durchaus genug Platz bieten sollte.
   1.151  
   1.152  
   1.153  Beschreibungen