#! /bin/sh # ############################################################################# NAME_="insertext" HTML_="insert text into another file" PURPOSE_="insert text file into another file at line n" SYNOPSIS_="$NAME_ [-hl] [..]" REQUIRES_="standard GNU commands" VERSION_="1.1" DATE_="2001-06-23; last update: 2005-03-30" AUTHOR_="Dawid Michalczyk " URL_="www.comp.eonworks.com" CATEGORY_="text" PLATFORM_="Linux" SHELL_="bash" DISTRIBUTE_="yes" # ############################################################################# # This program is distributed under the terms of the GNU General Public License usage() { echo >&2 "$NAME_ $VERSION_ - $PURPOSE_ Usage: $SYNOPSIS_ Requires: $REQUIRES_ Options: , an integer referring to line number at which to insert the text file , the text file to insert , the text file to insert into -h, usage and options (this help) -l, see this script" exit 1 } # tmp files setup tmp_1=/tmp/tmp.${RANDOM}$$ tmp_2=/tmp/tmp.${RANDOM}$$ # signal trapping and tmp file removal trap 'rm -f $tmp_1 $tmp_2 >/dev/null 2>&1' 0 trap "exit 1" 1 2 3 15 # enabling extended globbing shopt -s extglob # option handling case "$1" in -h) usage ;; -l) more $0; exit 1 ;; +([0-9])) # arg1 must be an integer n=$1 [[ $# < 3 ]] && { echo >&2 missing argument; exit 1; } [ -e $2 ] || { echo >&2 file $2 does not exist; exit 1; } insert=$2 shift 2 for a in $@; do if [ -f $a ]; then # in case we want to insert at line 1 if [[ $n == 1 ]];then touch $tmp_1 sed -n ''$n',$p' $a > $tmp_2 cat $tmp_1 $insert $tmp_2 > $a continue fi ((n--)) # back up one line sed -n '1,'$n'p' $a > $tmp_1 ((n++)) # back to original n sed -n ''$n',$p' $a > $tmp_2 cat $tmp_1 $insert $tmp_2 > $a else echo $a does not exist or is not a file fi done ;; *) echo invalid argument, type $NAME_ -h for help; exit 1 ;; esac