lines/getline: Ersatz für head/tail

Ab und an programmmiere ich ein Shell-Skript und versuche, dieses Skript POSIX-kompatibel zu halten.

Manchmal stoße ich auf die Situation, dass aus einer Datei oder einer Pipe (nur) bestimmte Zeilen gelesen werden sollen. Um nicht in einer großen Konstruktion aus head- und tail-Aufrufen zu enden und mehrere Blöcke gleichzeitig ausgeben zu können, habe ich einen weitgehenden Ersatz für head und tail programmiert.

Die erste Version war ein Shell-Skript, allerdings ist sie recht langsam, deswegen gibt es ein Awk-Programm, das funktional identisch, aber schneller ist.


Das Programm ist nicht schwer zu bedienen: Die Verwendung ist im Folgenden aufgeführt.

Hinweis: die Nutzung ist nur privat gestattet, es gelten die im Impressum aufgeführten Nutzungsbedingungen.


Verwendung (Linux, BSD, Windows (cygwin), OS X (?)):
  1. Herunterladen: Version 1.07 oder Version 1.08 (Bug behoben)
  2. In ein neues/leeres Verzeichnis (!) entpacken (Unpack into an empty dir!)
  3. Das neue Verzeichnis in PATH aufnehmen
  4. Ausführen:
    # printf "    %s\n" a b c d e f g | getline 2-3,3#-6
        b
        c
        e
        f
    # printf "    %s\n" a b c d e f g | getline 3#-6,2-3
        b
        c
        e
        f
    # printf "    %s\n" a b c d e | lines 2-3,3#-4
        b
        c
        c
        d
    # printf "    %s\n" a b c d e | lines --unique 2-3,3#-4
        b
        c
        d
    # printf "    %s\n" a b c d e | lines --unique 2-3,3#-
        b
        c
        d
        e
    #
    
    
  5. An der neu gefundenen Alternative zu head und tail freuen!

Document du Mai 2015, dernière modification le 7 Janvier 2024. Code source

Hintergrundbild: Schräge Vorderansicht der Lok 1142.562-9