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:

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