SPLIT=0
INFILE=""
TMPDIR="/tmp"
TMPFILE="splitter.sh"
CAT="/bin/cat"
TOUCH="/bin/touch"
WC="/usr/bin/wc"
RM="/bin/rm"
if [ 0 -lt $# ]; then
OPTTMP1="$1"
OPTTMP2="${OPTTMP1:0:1}"
OPTTMP1="$1"
OPTTMP3="${OPTTMP1#${OPTTMP2}}"
if [ "-" != "$OPTTMP2" ]; then
echo "オプションの1つ目は-で始まって分割する数値を指定してください"\ 1>&2
exit -1
else
if [ 1 -lt "$OPTTMP3" ]; then
SPLIT="$OPTTMP3"
else
echo "オプションの1つ目は-で始めって分割する数値を指定して下さい" 1>&2
exit -1
fi
shift 1
if [ 0 -lt $# ]; then
INFILE="$1"
elif [ 1 -lt $# ]; then
echo "オプションが多いです" 1>&2
exit -1
fi
fi
else
echo "オプションが多いです" 1>&2
exit -1
fi
if [ "" = "$INFILE" ]; then
DATETIME=$(LANG=C;$DATE "%Y-%m-%d-%X")
TMPDIRFILE="$TMPDIR/$TMPFILE.$DATETIME"
INFILE="$TMPDIRFILE"
IFS=""
while read line; do
echo "$line" >> "$INFILE"
done
OUTFILE="$TMPFILE.$DATETIME"
else
TMPDIRFILE=""
OUTFILE="$INFILE"
fi
if [ -f "$INFILE" ]; then
LINES="$($CAT $INFILE | $WC -l)"
LINES="${LINES// }"
if [ $LINES -lt $SPLIT ]; then
echo "本文の行数より分割数が大きいです" 1>&2
exit -1
else
LPF=$(( LINES / SPLIT ))
i=0
while read line; do
if [ "(" 0 -eq $(( i % LPF )) ")" -a \
"(" $i -lt $(( SPLIT * LPF )) ")" ]; then
file="$(printf "%s.%04d" $OUTFILE $(( i / LPF )))"
$($TOUCH "$file")
fi
echo "$line" >> "$file"
let "i++"
done < "$INFILE"
fi
fi
if [ -f "$TMPDIRFILE" ]; then
$($RM "$TMPDIRFILE")
fi