#!/bin/sh usage() { >&2 printf "usage: %s [-l num] [file ...]\n" "$(basename "$0")" exit 1 } ml=72 while getopts :l: o do case "$o" in l) ml="$OPTARG" ;; ?) usage ;; esac done shift "$((OPTIND-1))" awk -v ml="$ml" ' BEGIN { s=0 } length > ml { f="%s:%d:%d: Line length exceeds %d characters\n" printf f, FILENAME, FNR, length, ml | "cat 1>&2" s=1 } END { exit s } ' "$@"