#!/usr/bin/ksh93 ################################################################ #### Program: uniq_k93 #### #### Description: Emulation of the Unix "uniq" command #### #### Author: Dana French (dfrench@mtxia.com) #### Copyright 2004 #### #### Date: 07/22/2004 #### ################################################################ function uniq_k93 { typeset TRUE="0" typeset FALSE="1" typeset OLDPREV="" typeset FNAME="" typeset STDIN="${1:+${FALSE}}" STDIN="${STDIN:-${TRUE}}" if (( STDIN == TRUE )) then getUniqLine_k93 OLDPREV else for FNAME in "${@}" do if [[ -f "${FNAME}" ]] then exec 0<"${FNAME}" getUniqLine_k93 OLDPREV exec 0<&- else print -u 2 "ERROR: \"${FNAME}\" does not exist or is not a regular file." fi done fi return 0 } ################################################################ function getUniqLine_k93 { nameref OLDPREV="${1}" typeset PREV="${OLDPREV}" typeset CURR IFS="" [[ ${OLDPREV} = "_" ]] && read -r -- PREV && print -r -- "${PREV}" while read -r -- CURR do [[ "_${PREV}" = "_${CURR}" ]] && continue print -r -- "${CURR}" PREV="${CURR}" done OLDPREV="${PREV}" return 0 } ################################################################ uniq_k93 "${@}"