Mercurial > docs > cut
comparison cut.txt @ 18:b1e7b45fb3c8
Anmerkungen von Michi eingearbeitet
author | markus schnalke <meillo@marmaro.de> |
---|---|
date | Tue, 19 May 2015 07:30:07 +0200 |
parents | 08f539a5445d |
children | a62964d0cc54 |
comparison
equal
deleted
inserted
replaced
17:08f539a5445d | 18:b1e7b45fb3c8 |
---|---|
73 den Zeichenmodus neu zu implementieren. | 73 den Zeichenmodus neu zu implementieren. |
74 | 74 |
75 Neben dem Zeichen- und Bytemodus bietet cut noch den | 75 Neben dem Zeichen- und Bytemodus bietet cut noch den |
76 Feldmodus, den man mit `-f' einleitet. Mit ihm | 76 Feldmodus, den man mit `-f' einleitet. Mit ihm |
77 koennen Felder ausgewaehlt werden. Das Trennzeichen (per | 77 koennen Felder ausgewaehlt werden. Das Trennzeichen (per |
78 Default der Tab) kann mit `-d' geaendert werden. | 78 Default der Tab) kann mit `-d' geaendert werden. Es gilt sowohl |
79 fuer die Eingabe als auch fuer die Ausgabe. | |
79 | 80 |
80 Der typische Anwendungsfall fuer cut im Feldmodus ist die | 81 Der typische Anwendungsfall fuer cut im Feldmodus ist die |
81 Auswahl von Information aus der passwd-Datei. So z.B. der | 82 Auswahl von Information aus der passwd-Datei. So z.B. der |
82 Benutzername und seine ID: | 83 Benutzername und seine ID: |
83 | 84 |
306 | 307 |
307 Nun zum Test der cut-Implementierung. Hat man ein UTF-8-System, | 308 Nun zum Test der cut-Implementierung. Hat man ein UTF-8-System, |
308 dann sollte sich eine POSIX-konforme Implementierung folgendermassen | 309 dann sollte sich eine POSIX-konforme Implementierung folgendermassen |
309 verhalten: | 310 verhalten: |
310 | 311 |
311 $ echo ä | ./cut -c 1 | od -c | 312 $ echo ä | cut -c 1 | od -c |
312 0000000 303 244 \n | 313 0000000 303 244 \n |
313 0000003 | 314 0000003 |
314 | 315 |
315 $ echo ä | ./cut -b 1 | od -c | 316 $ echo ä | cut -b 1 | od -c |
316 0000000 303 \n | 317 0000000 303 \n |
317 0000002 | 318 0000002 |
318 | 319 |
319 $ echo ä | ./cut -b 1 -n | od -c | 320 $ echo ä | cut -b 1 -n | od -c |
320 0000000 \n | 321 0000000 \n |
321 0000001 | 322 0000001 |
322 | 323 |
323 Bei einer Pseudo-POSIX-Implementierung ist die Ausgabe in | 324 Bei einer Pseudo-POSIX-Implementierung ist die Ausgabe in |
324 allen drei Faellen wie die mittlere: Es wird das erste Byte | 325 allen drei Faellen wie die mittlere: Es wird das erste Byte |
360 die alte GNU-Version mit 340-390 SLOCs. Und schliesslich (4) die | 361 die alte GNU-Version mit 340-390 SLOCs. Und schliesslich (4) die |
361 moderne GNU-Variante mit fast 600 SLOCs. | 362 moderne GNU-Variante mit fast 600 SLOCs. |
362 | 363 |
363 Die Abweichung zwischen logischen Codezeilen (SLOC, ermittelt mit | 364 Die Abweichung zwischen logischen Codezeilen (SLOC, ermittelt mit |
364 SLOCcount) und der Anzahl von Zeilenumbruechen in der Datei (`wc | 365 SLOCcount) und der Anzahl von Zeilenumbruechen in der Datei (`wc |
365 -l') erstreckt sich ueber einen Faktor von 1.06 bei den aeltesten | 366 -l') erstreckt sich ueber eine Spanne von Faktor 1.06 bei den |
366 Vertretern bis zu Faktor 1.5 bei GNU. Der groesste | 367 aeltesten Vertretern bis zu Faktor 1.5 bei GNU. Der groesste |
367 Einflussfaktor darauf sind Leerzeilen, reine Kommentarzeilen und | 368 Einflussfaktor darauf haben Leerzeilen, reine Kommentarzeilen und |
368 die Groesse des Lizenzblocks am Dateianfang. | 369 die Groesse des Lizenzblocks am Dateianfang. |
369 | 370 |
370 Betrachtet man die Abweichungen zwischen den logischen Codezeilen | 371 Betrachtet man die Abweichungen zwischen den logischen Codezeilen |
371 und der Dateigroesse (`wc -c'), so pendelt das Teilnehmerfeld | 372 und der Dateigroesse (`wc -c'), so pendelt das Teilnehmerfeld |
372 zwischen 25 und 30 Bytes je Anweisung. Die Heirloom-Implementierung | 373 zwischen 25 und 30 Bytes je Anweisung. Die Heirloom-Implementierung |
373 weicht mit nur 21 nach unten ab, die GNU-Implementierungen mit | 374 weicht mit nur 21 nach unten ab, die GNU-Implementierungen mit |
374 fast 40 nach oben. Bei GNU liegt dies hauptsaechlich an deren | 375 fast 40 nach oben. Bei GNU liegt dies hauptsaechlich an deren |
375 Programmierstil, mit spezieller Einrueckung und langen Bezeichnern. | 376 Programmierstil, mit spezieller Einrueckung und langen Bezeichnern. |
376 Ob man die Heirloom-Implementierung als besonders kryptisch | 377 Ob man die Heirloom-Implementierung als besonders kryptisch |
377 oder als besonders elegant bezeichnen will, das soll der | 378 oder als besonders elegant bezeichnen will, das soll der |
378 eigenen Einschaetzung des Lesers ueberlassen bleiben. | 379 eigenen Einschaetzung des Lesers ueberlassen bleiben. Vor allem |
380 der Vergleich mit einer GNU-Implementierung ist eindrucksvoll. | |
379 | 381 |
380 | 382 |
381 Die interne Struktur der Programmcodes (in C) ist meist aehnlich. | 383 Die interne Struktur der Programmcodes (in C) ist meist aehnlich. |
382 Neben der obligatorischen main-Funktion, die die Kommandozeilenargumente | 384 Neben der obligatorischen main-Funktion, die die Kommandozeilenargumente |
383 verarbeitet, gibt es im Normalfall eine Funktion, die die | 385 verarbeitet, gibt es im Normalfall eine Funktion, die die |
395 Zeilenlaenge. Bei System III sind beide Groessen auf 512 begrenzt. | 397 Zeilenlaenge. Bei System III sind beide Groessen auf 512 begrenzt. |
396 4.3BSD-Reno und die BSDs der 90er Jahre haben ebenfalls fixe | 398 4.3BSD-Reno und die BSDs der 90er Jahre haben ebenfalls fixe |
397 Grenzen (_BSD_LINE_MAX bzw. _POSIX2_LINE_MAX). Bei modernen | 399 Grenzen (_BSD_LINE_MAX bzw. _POSIX2_LINE_MAX). Bei modernen |
398 FreeBSDs, NetBSDs, bei allen GNU-Implementierungen und bei | 400 FreeBSDs, NetBSDs, bei allen GNU-Implementierungen und bei |
399 Heirloom kann sowohl die Felderanzahl als auch die maximale | 401 Heirloom kann sowohl die Felderanzahl als auch die maximale |
400 Zeilenlaenge beliebig gross werden; der Speicher dafür wird | 402 Zeilenlaenge beliebig gross werden; der Speicher dafuer wird |
401 dynamisch alloziiert. OpenBSD ist ein Hybrid aus fixer | 403 dynamisch alloziiert. OpenBSD ist ein Hybrid aus fixer |
402 Maximalzahl an Feldern, aber beliebiger Zeilenlaenge. Die | 404 Maximalzahl an Feldern, aber beliebiger Zeilenlaenge. Die |
403 begrenzte Felderanzahl scheint jedoch kein Praxisproblem | 405 begrenzte Felderanzahl scheint jedoch kein Praxisproblem |
404 darzustellen, da _POSIX2_LINE_MAX mit mindestens 2048 durchaus | 406 darzustellen, da _POSIX2_LINE_MAX mit mindestens 2048 durchaus |
405 gross genug sein sollte. | 407 gross genug sein sollte. |
440 POSIX cut out selected fields of each line of a file | 442 POSIX cut out selected fields of each line of a file |
441 | 443 |
442 | 444 |
443 Die mit ``(src)'' markierten Beschreibungen sind aus dem | 445 Die mit ``(src)'' markierten Beschreibungen sind aus dem |
444 jeweiligen Quellcode entnommen. Der POSIX-Eintrag enthaelt | 446 jeweiligen Quellcode entnommen. Der POSIX-Eintrag enthaelt |
445 die Beschreibung des Standards. Der ``Unix Reader'' ist ein | 447 die Beschreibung im Standard. Der ``Unix Reader'' ist ein |
446 rueckblickendes Textdokument von Doug McIlroy, das das | 448 rueckblickendes Textdokument von Doug McIlroy, das das |
447 Auftreten von Tools in der Geschichte des Research Unix zum | 449 Auftreten der Tools in der Geschichte des Research Unix zum |
448 Thema hat. | 450 Thema hat. |
449 [ http://doc.cat-v.org/unix/unix-reader/contents.pdf | 451 [ http://doc.cat-v.org/unix/unix-reader/contents.pdf |
450 Eigentlich sollte seine Beschreibung der in Version 8 Unix | 452 Eigentlich sollte seine Beschreibung der in Version 8 Unix |
451 entsprechen. Die Abweichung koennte sowohl ein | 453 entsprechen. Die Abweichung koennte sowohl ein |
452 Uebertragungsfehler als auch eine nachtraegliche Korrektur | 454 Uebertragungsfehler als auch eine nachtraegliche Korrektur |