comparison cut.txt @ 6:bf2ac5df0063

Zwischenstand
author markus schnalke <meillo@marmaro.de>
date Sun, 03 May 2015 18:08:00 +0200
parents 00097c80a853
children 21ca59543b07
comparison
equal deleted inserted replaced
5:00097c80a853 6:bf2ac5df0063
1 Das Werkzeugkaestle 1 Das Werkzeugkaestle, #1
2 2
3 #1: cut - cut out selected fields of each line of a file 3 cut - cut out selected fields of each line of a file
4 --------------------------------------------------------- 4 ----------------------------------------------------
5 markus schnalke, 2015-05 5 markus schnalke <meillo@marmaro.de>
6 2015-05
6 7
7 8
8 Cut ist ein klassisches Programm im Unix-Werkzeugkasten. 9 Cut ist ein klassisches Programm im Unix-Werkzeugkasten.
9 In keinem ordentlichen Tutorial zur Shellprogrammierung darf 10 In keinem ordentlichen Tutorial zur Shellprogrammierung darf
10 es fehlen. Es ist ein schoenes Anschauungs- und Beispielobjekt 11 es fehlen. Es ist ein schoenes Anschauungs- und Beispielobjekt
33 $ ls -l | cut -c 3,6,9 34 $ ls -l | cut -c 3,6,9
34 ww- 35 ww-
35 36
36 Mit cut lassen sich aber auch Strings kuerzen. 37 Mit cut lassen sich aber auch Strings kuerzen.
37 38
38 echo "$long" | cut -c -20 39 $ echo "$long" | cut -c -20
39 40
40 Dieser Befehl gibt die ersten maximal 20 Zeichen (jeder 41 Dieser Befehl gibt die ersten maximal 20 Zeichen (jeder
41 Zeile) von `$long' aus. 42 Zeile) von `$long' aus.
42 43
43 Geht es aber nicht um die Darstellung von Zeichen, sondern um 44 Geht es aber nicht um die Darstellung von Zeichen, sondern um
51 POSIX.2-1992 die Option `-b'. Diese selektiert Bytes. Will man 52 POSIX.2-1992 die Option `-b'. Diese selektiert Bytes. Will man
52 also nur die ersten maximal 500 Bytes vor dem 53 also nur die ersten maximal 500 Bytes vor dem
53 Newline-Zeichen stehen haben (und den Rest stillschweigend 54 Newline-Zeichen stehen haben (und den Rest stillschweigend
54 ignorieren), dann macht man das mit: 55 ignorieren), dann macht man das mit:
55 56
56 cut -b -500 57 $ cut -b -500
57 58
58 Den Rest kann man sich mit `cut -b 501-' einfangen. Diese 59 Den Rest kann man sich mit `cut -b 501-' einfangen. Diese
59 Funktion ist insbesondere fuer POSIX wichtig, da so sicher 60 Funktion ist insbesondere fuer POSIX wichtig, da so sicher
60 gestellt werden kann, dass Textdateien keine beliebig 61 gestellt werden kann, dass Textdateien keine beliebig
61 langen Zeilen haben. 62 langen Zeilen haben.
68 69
69 Der typische Anwendungsfall fuer den Feld-Modus. Ist die 70 Der typische Anwendungsfall fuer den Feld-Modus. Ist die
70 Extraktion von Information aus der passwd-Datei. So z.B. der 71 Extraktion von Information aus der passwd-Datei. So z.B. der
71 Username, die User-ID und das Homeverzeichnis: 72 Username, die User-ID und das Homeverzeichnis:
72 73
73 cut -d: -f1,3,6 /etc/passwd 74 $ cut -d: -f1,3,6 /etc/passwd
74 75
75 (Die Argumente fuer die Optionen koennen bei cut uebrigens 76 (Die Argumente fuer die Optionen koennen bei cut uebrigens
76 direkt angehaengt oder mit Whitespace abgetrennt folgen.) 77 direkt angehaengt oder mit Whitespace abgetrennt folgen.)
77 78
78 79
112 Das ist die aelteste Manifestation des Programms, die ich 113 Das ist die aelteste Manifestation des Programms, die ich
113 aufstoebern konnte. 114 aufstoebern konnte.
114 115
115 Aber werfen wir doch einen Blick auf die BSD-Linie: Dort ist mein 116 Aber werfen wir doch einen Blick auf die BSD-Linie: Dort ist mein
116 fruehester Fund ein cut.c mit dem Datum 1986-11-07 im Code der 117 fruehester Fund ein cut.c mit dem Datum 1986-11-07 im Code der
117 Spezialversion 4.3BSD-UWisc, die im Januar 1987 veroeffentlicht 118 Spezialversion 4.3BSD-UWisc,
118 wurde. 119 [ http://gunkies.org/wiki/4.3_BSD_NFS_Wisconsin_Unix
120 die im Januar 1987 veroeffentlicht wurde.
119 [ http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-UWisc/src/usr.bin/cut 121 [ http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-UWisc/src/usr.bin/cut
120 Die Datei unterscheidet sich nur minimal von der aus System III. 122 Die Datei unterscheidet sich nur minimal von der aus System III.
121 Im bekannteren 4.3BSD-Tahoe (1988) taucht cut aber nicht auf. 123 Im bekannteren 4.3BSD-Tahoe (1988) taucht cut aber nicht auf.
122 Im darauf folgenden 4.3BSD-Reno (1990) gibt es wiederum ein 124 Im darauf folgenden 4.3BSD-Reno (1990) gibt es wiederum ein
123 cut ... ein von Adam S. Moskowitz und Marciano Pitargue neu 125 cut ... ein von Adam S. Moskowitz und Marciano Pitargue neu
223 Codevergleich 225 Codevergleich
224 226
225 227
226 228
227 229
230 B-) wc -lc cut.c* | sort -n
231 123 2966 cut.c__system_iii.1980-04-11
232 125 3038 cut.c__4.3bsd-uwisc.1986-11-07
233 256 5715 cut.c__4.3bsd-reno.1990-06-25
234 270 6545 cut.c__netbsd.1993-03-21
235 296 6920 cut.c__freebsd.1994-05-27
236 306 7500 cut.c__netbsd.2014-02-03 *
237 479 10961 cut.c__freebsd.2012-11-24 *
238 586 14175 cut.c__gnu.1992-11-08 *
239 830 23167 cut.c__gnu.2015-05-01 *
240 3271 80987 total
241
242 B-) c_count cut.c* | sort -n
243 Total:
244 116 cut.c__system_iii.1980-04-11
245 118 cut.c__4.3bsd-uwisc.1986-11-07
246 200 cut.c__4.3bsd-reno.1990-06-25
247 200 cut.c__netbsd.1993-03-21
248 224 cut.c__freebsd.1994-05-27
249 232 cut.c__netbsd.2014-02-03 *
250 382 cut.c__gnu.1992-11-08 *
251 391 cut.c__freebsd.2012-11-24 *
252 588 cut.c__gnu.2015-05-01 *
253 2451
254
255 (* == version hat -b)
256
257
228 258
229 259
230 cut(1) in Version 8 Unix 260 cut(1) in Version 8 Unix
231 ``In data base parlance, it projects a relation.'' 261 ``In data base parlance, it projects a relation.''
262
263
264
265 Autoreninfo
266
267 Markus Schnalke interessiert sich fuer die Hintergruende
268 von Unix und seinen Werkzeugen. Fuer die Erarbeitung dieses
269 Textes wurde er regelrecht zum Historiker.
270
271
272 Lizenz
273 CC0 (und kann damit auch unter CC BY-SA 4.0 Unported
274 veroeffentlicht werden)