TABSTOP=8
MINTABSTOP=1
INFILE="-"
OPTIONS="t:"
function replace_sp(){
local LLINE="$1"
local LTMP1=""
local LTMP2=""
local LTMP3=""
local LNLIN=""
local LLENGTH=${#LLINE}
local Llen1=0
local Llen2=0
IFS=""
while [ 0 -lt $LLENGTH ]; do
Llen1=0
Llen2=0
LTMP3="$LLINE"
LTMP2="${LTMP3#?}"
LTMP3="$LLINE"
LTMP1="${LTMP3%${LTMP2}}"
LLINE="$LTMP2"
while [ " " != "${LTMP1}" ]; do
LNLIN="$LNLIN$LTMP1"
let "Llen1++"
if [ 0 -eq ${#LTMP2} ]; then
break
fi
LTMP3="$LLINE"
LTMP2="${LTMP3#?}"
LTMP3="$LLINE"
LTMP1="${LTMP3%${LTMP2}}"
LLINE="$LTMP2"
done
while [ " " = "${LTMP1}" ]; do
let "Llen2++"
if [ 0 -eq ${#LTMP2} ]; then
break
fi
LTMP3="$LLINE"
LTMP2="${LTMP3#?}"
LTMP3="$LLINE"
LTMP1="${LTMP3%${LTMP2}}"
LLINE="$LTMP2"
done
if [ 0 -lt $Llen2 ]; then
if [ " " != "${LTMP1}" ]; then
LLINE="$LTMP1$LLINE"
fi
for (( i = (Llen2+TABSTOP-1)/TABSTOP; 0 < i; i-- )){
LNLIN="$LNLIN "
}
fi
LLENGTH=${#LLINE}
done
echo "$LNLIN"
}
while getopts $OPTIONS opt $@ ; do
case "$opt" in
t)
if [ $MINSTASTOP -le $OPTARG ]; then
TABSTOP=$OPTARG
else
echo "タブストップの文字数を指定してください" 1>&2
exit -1
fi
;;
*) exit -1 ;;
esac
done
shift $(( $OPTIND -1 ))
if [ $# -eq 0 ]; then
INFILE=""
elif [ $# -eq 1 ]; then
if [ "\-" = "$1" ]; then
INFILE=""
else
INFILE="$1"
if [ ! "(" -f $INFILE ")" ]; then
echo "ファイルが読めません" 1>&2
exit -1
fi
fi
else
echo "オプションが多いです" 1>&2
exit -1
fi
if [ "" = "$INFILE" ]; then
echo 1
while read line; do
replace_sp "$line"
done
else
while read line; do
replace_sp "$line"
done < "$INFILE"
fi