back
awk
Description:
A looping construct for processing input in a way similar to
the awk tool.
Author:
Originally by Olin Shivers. This implementation has been taken from
PLT and minimally modified by
felix
to work with Chicken.
Version:
- 1.1
Adapted to new setup scheme
- 1.0
Usage:
(require-extension awk)
Download:
awk.egg
Documentation:
See the SCSH
documentation for awk
.
Examples:
--- Count non-comment lines in Scheme file:
(print
(awk (read-line) (line) ([nlines 0])
("^[ \t]*;" nlines)
(else (add1 nlines)) ) )
--- Strip blank lines:
(awk (read-line) (line) ()
("[^ \t]" (print line)) )
--- Compute maximal line length:
(print
(awk (read-line) (line) ([max-len 0])
(#t (max max-len (string-length line))) ) )
--- Sort /etc/passwd file:
(define (read-passwd . port)
(let ([line (apply read-line port)])
(if (eof-object? line)
(values line #f)
(values line (string-split-fields ":" line #:infix)) ) ) )
(for-each
(lambda (entry) (print (cdr entry)))
(sort
(awk (read-passwd) (line fields) ([ans '()])
(#t (cons (cons (car fields) line) ans)) )
(lambda (x y) (string<? (car x) (car y))) ) ) )
License:
PLT Software
Copyright (c) 1995-2002 PLT
PLT software is distributed under the GNU Lesser General Public
License (LGPL).
back