diff --git a/shell/from2.sh b/shell/from2.sh new file mode 100755 index 0000000..188e8be --- /dev/null +++ b/shell/from2.sh @@ -0,0 +1,49 @@ +#!/bin/bash +################################################################################ +# 'from2.sh', created by motius, on 2017-08-03 +################################################################################ + +# vars +USAGE="usage: from2 " +CAT=/bin/cat +HEAD=/usr/bin/head +TAIL=/usr/bin/tail +WC=/usr/bin/wc + + +################################################################################ +# test number of arguments +[ $# -ne 3 ] && echo "${USAGE}" && exit 1 + +# test if file +[ -f "${1}" ] || exit 2 + + +################################################################################ +# test numbers +case "${2}" in + ''|*[!0-9]*) exit 3 ;; +esac +case "${3}" in + ''|*[!0-9]*) exit 4 ;; +esac + +# test if $2 <= $3 +[ "${2}" -gt "${3}" ] && exit 5 + + +################################################################################ +# test if enough lines +LINES=$(${WC} -l "${1}" | cut -d ' ' -f1) +[ "${LINES}" -lt "${2}" ] && exit 6 + + +################################################################################ +# run +${CAT} "${1}" | ${HEAD} -n "${3}" | ${TAIL} -n $(($3-$2+1)) + + +################################################################################ +# EOF 'from2.sh' +################################################################################ +