docs/cut
diff cut.txt @ 19:a62964d0cc54
Verbesserungen durch diction(1) eingearbeitet
author | markus schnalke <meillo@marmaro.de> |
---|---|
date | Tue, 19 May 2015 08:04:05 +0200 |
parents | b1e7b45fb3c8 |
children | c0e589b92c52 |
line diff
1.1 --- a/cut.txt Tue May 19 07:30:07 2015 +0200 1.2 +++ b/cut.txt Tue May 19 08:04:05 2015 +0200 1.3 @@ -19,7 +19,7 @@ 1.4 definierte, Felder. 1.5 1.6 Der Zeichenmodus ist optimal geeignet um Festbreitenformate zu 1.7 -zerteilen. So kann man damit beispielsweise bestimmte 1.8 +zerteilen. Man kann damit beispielsweise bestimmte 1.9 Zugriffsrechte aus der Ausgabe von `ls -l' ausschneiden, in 1.10 diesem Beispiel die Rechte des Besitzers: 1.11 1.12 @@ -61,7 +61,7 @@ 1.13 $ cut -b -500 1.14 1.15 Den Rest kann man sich mit `cut -b 501-' einfangen. Diese 1.16 -Funktion ist insbesondere fuer POSIX wichtig, da man so 1.17 +Funktion ist insbesondere fuer POSIX wichtig, da man damit 1.18 Textdateien mit begrenzter Zeilenlaenge erzeugen kann. 1.19 [ http://pubs.opengroup.org/onlinepubs/9699919799/utilities/cut.html#tag_20_28_17 1.20 1.21 @@ -69,17 +69,17 @@ 1.22 er sich doch nur so verhalten wie der alte Zeichenmodus 1.23 normalerweise schon implementiert war. Beim Zeichenmodus aber 1.24 wurde eine neue Implementierungsweise gefordert. Das Problem 1.25 -war also nicht, den neuen Bytemodus zu implementieren, sondern 1.26 +war folglich nicht, den neuen Bytemodus zu implementieren, sondern 1.27 den Zeichenmodus neu zu implementieren. 1.28 1.29 Neben dem Zeichen- und Bytemodus bietet cut noch den 1.30 Feldmodus, den man mit `-f' einleitet. Mit ihm 1.31 koennen Felder ausgewaehlt werden. Das Trennzeichen (per 1.32 -Default der Tab) kann mit `-d' geaendert werden. Es gilt sowohl 1.33 -fuer die Eingabe als auch fuer die Ausgabe. 1.34 +Default der Tab) kann mit `-d' geaendert werden. Es gilt in 1.35 +gleicher Weise fuer die Eingabe und die Ausgabe. 1.36 1.37 Der typische Anwendungsfall fuer cut im Feldmodus ist die 1.38 -Auswahl von Information aus der passwd-Datei. So z.B. der 1.39 +Auswahl von Information aus der passwd-Datei. Hier z.B. der 1.40 Benutzername und seine ID: 1.41 1.42 $ cut -d: -f1,3 /etc/passwd 1.43 @@ -97,8 +97,8 @@ 1.44 seine Grenzen. Gerade der haeufige Fall, dass an Whitespace 1.45 in Felder geteilt werden soll, wird damit nicht abgedeckt. 1.46 Der Delimiter kann bei cut nur genau ein Zeichen sein. Es kann 1.47 -also nicht sowohl an Leerzeichen als auch an Tabs aufgetrennt 1.48 -werden. Auch unterteilt cut an jedem Trennzeichen. Zwei aneinander 1.49 +demnach nicht sowohl an Leerzeichen als auch an Tabs aufgetrennt 1.50 +werden. Zudem unterteilt cut an jedem Trennzeichen. Zwei aneinander 1.51 stehende Trennzeichen fuehren zu einem leeren Feld. Dieses 1.52 Verhalten widerspricht den Erwartungen, die man an die 1.53 Verarbeitung einer Datei mit Whitespace-getrennten Feldern 1.54 @@ -111,16 +111,17 @@ 1.55 Awk bietet noch eine weitere Funktion, die cut missen 1.56 laesst: Das Tauschen der Feld-Reihenfolge in der Ausgabe. Bei 1.57 cut ist die Reihenfolge der Feldauswahlangabe irrelevant; ein 1.58 -Feld kann selbst mehrfach angegeben werden. So gibt der Aufruf 1.59 +Feld kann selbst mehrfach angegeben werden. Dementsprechend gibt 1.60 +der Aufruf 1.61 von `cut -c 5-8,1,4-6' die Zeichen Nummer 1, 4, 5, 6, 7 und 8 1.62 in genau dieser Reihenfolge aus. Die Auswahl entspricht damit 1.63 der Mengenlehre in der Mathematik: Jedes angegebene Feld wird 1.64 Teil der Ergebnismenge. Die Felder der Ergebnismenge sind 1.65 -dabei immer gleich geordnet wie in der Eingabe. Um die Worte 1.66 +hierbei immer gleich geordnet wie in der Eingabe. Um die Worte 1.67 der Manpage von Version 8 Unix wiederzugeben: ``In data base 1.68 parlance, it projects a relation.'' 1.69 [ http://man.cat-v.org/unix_8th/1/cut 1.70 -Cut fuehrt also die Datenbankoperation Projektion auf 1.71 +Cut fuehrt demnach die Datenbankoperation Projektion auf 1.72 Textdateien aus. Die Wikipedia erklaert das folgendermassen: 1.73 1.74 Die Projektion entspricht der Projektionsabbildung aus der 1.75 @@ -142,7 +143,7 @@ 1.76 [ http://minnie.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/cmd 1.77 Das ist die aelteste Manifestation des Programms, die ich 1.78 aufstoebern konnte. Allerdings spricht die SCCS-ID im 1.79 -Quellcode von Version 1.5. Es muss also noch eine 1.80 +Quellcode von Version 1.5. Es muss demzufolge noch eine 1.81 Vorgeschichte geben. Zu dieser habe ich leider keinen Zugang 1.82 gefunden. 1.83 XXX mail an TUHS 1.84 @@ -165,7 +166,7 @@ 1.85 [ http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-Reno/src/usr.bin/cut/cut.1 1.86 erwaehnt bereits die erwartete Konformitaet mit POSIX.2. 1.87 Nun muss man wissen, dass POSIX.2 erst im September 1.88 -1992 veroeffentlicht wurde, also gut zwei Jahren nachdem die 1.89 +1992 veroeffentlicht wurde, erst gut zwei Jahren nachdem die 1.90 Manpage und das Programm geschrieben worden waren. Das Programm 1.91 wurde folglich anhand von Arbeitsversionen des Standards 1.92 implementiert. Ein Blick in den Code bekraeftigt diese Vermutung. 1.93 @@ -182,7 +183,7 @@ 1.94 The elements in list can be repeated, can overlap, and can 1.95 be specified in any order. 1.96 1.97 -Auch listet Draft 11.2 alle drei Modi, waehrend in diesem 1.98 +Zudem listet Draft 11.2 alle drei Modi, waehrend in diesem 1.99 BSD cut nur die zwei alten implementiert sind. Es koennte also 1.100 sein, dass in Draft 9 der Bytemodus noch nicht vorhanden war. 1.101 Da ich keinen Zugang zu Draft 9 oder 10 finden konnte, war es mir 1.102 @@ -209,7 +210,7 @@ 1.103 aus Sicht des urspruenglichen Unix, zu den juengeren Tools. 1.104 Wenn cut auch ein Jahrzehnt aelter als Linux, der Kernel, ist, 1.105 so war Unix doch schon ueber zehn Jahre alt, als cut das 1.106 -erste Mal auftauchte. Insbesondere gehoerte cut auch noch nicht 1.107 +erste Mal auftauchte. Insbesondere gehoerte cut noch nicht 1.108 zu Version 7 Unix, das die Ausgangsbasis aller modernen 1.109 Unix-Systeme darstellt. Die weit komplexeren Programme sed 1.110 und awk waren dort schon vertreten. Man muss sich also 1.111 @@ -364,8 +365,8 @@ 1.112 Die Abweichung zwischen logischen Codezeilen (SLOC, ermittelt mit 1.113 SLOCcount) und der Anzahl von Zeilenumbruechen in der Datei (`wc 1.114 -l') erstreckt sich ueber eine Spanne von Faktor 1.06 bei den 1.115 -aeltesten Vertretern bis zu Faktor 1.5 bei GNU. Der groesste 1.116 -Einflussfaktor darauf haben Leerzeilen, reine Kommentarzeilen und 1.117 +aeltesten Vertretern bis zu Faktor 1.5 bei GNU. Den groessten 1.118 +Einfluss darauf haben Leerzeilen, reine Kommentarzeilen und 1.119 die Groesse des Lizenzblocks am Dateianfang. 1.120 1.121 Betrachtet man die Abweichungen zwischen den logischen Codezeilen 1.122 @@ -385,7 +386,7 @@ 1.123 verarbeitet, gibt es im Normalfall eine Funktion, die die 1.124 Feldauswahl in eine interne Datenstruktur ueberfuehrt. Desweiteren 1.125 haben fast alle Implementierungen separate Funktionen fuer die 1.126 -zwei bzw. drei Modi. Bei den POSIX-konformen Implementierungen 1.127 +zwei oder drei Modi. Bei den POSIX-konformen Implementierungen 1.128 wird die `-b -n'-Kombination als weiterer Modus behandelt, und 1.129 damit in einer eigenen Funktion umgesetzt. Nur bei der fruehen 1.130 System III-Implementierung (und seiner 4.3BSD-UWisc-Variante) 1.131 @@ -409,9 +410,9 @@ 1.132 1.133 Beschreibungen 1.134 1.135 -Interessant ist auch ein Vergleich der Kurzbeschreibungen von 1.136 +Interessant ist zudem ein Vergleich der Kurzbeschreibungen von 1.137 cut, wie sie sich in der Titelzeile der Manpages oder manchmal 1.138 -auch am Anfang der Quellcodedatei finden. Die folgende Liste 1.139 +am Anfang der Quellcodedatei finden. Die folgende Liste 1.140 ist grob zeitlich geordnet und nach Abstammung gruppiert: 1.141 1.142 1.143 @@ -450,9 +451,9 @@ 1.144 Thema hat. 1.145 [ http://doc.cat-v.org/unix/unix-reader/contents.pdf 1.146 Eigentlich sollte seine Beschreibung der in Version 8 Unix 1.147 -entsprechen. Die Abweichung koennte sowohl ein 1.148 -Uebertragungsfehler als auch eine nachtraegliche Korrektur 1.149 -sein. Alle uebrigen Beschreibungen entstammen den Manpages. 1.150 +entsprechen. Die Abweichung koennte ein Uebertragungsfehler 1.151 +oder eine nachtraegliche Korrektur sein. Alle uebrigen 1.152 +Beschreibungen entstammen den Manpages. 1.153 1.154 Oft ist mit der Zeit die POSIX-Beschreibung uebernommen 1.155 oder an sie angeglichen worden, wie beispielsweise bei FreeBSD. 1.156 @@ -461,10 +462,10 @@ 1.157 Interessant ist, dass die GNU coreutils seit Anbeginn vom 1.158 Entfernen von Teilen der Eingabe sprechen, wohingegen die 1.159 Kommandozeilenangabe klar ein Auswaehlen darstellt. Die 1.160 -Worte ``cut out'' sind vielleicht auch etwas zu 1.161 -missverstaendlich. HP-UX hat sie deshalb praezisiert. 1.162 +Worte ``cut out'' sind vielleicht auch zu missverstaendlich. 1.163 +HP-UX hat sie deshalb praezisiert. 1.164 1.165 -Auch beim Begriff, was selektiert wird, ist man sich 1.166 +Beim Begriff, was selektiert wird, ist man sich ebenfalls 1.167 uneins. Die Einen reden von Feldern (POSIX), Andere von 1.168 Abschnitten bzw. Teilen (BSD) und wieder Andere von Spalten 1.169 (Research Unix). Ironischerweise leistet sich gerade Version