more +n 從第 n 讀取資料。
function extract() {
key=$(more "+${beg}" $1|grep -m1 "<$2>" | sed "s/.*<$2>\(.*\)<\/$2>.*/\1/")
key=$(echo "$key" | grep -o "[^ ]\+\( \+[^ ]\+\)*")
}
arra=($(cat -n $1 | egrep '<(choose|noregister|stop)>' | awk '{print $1}'))
if ! num=$(echo "$4" | grep '^[1-9][0-9]*$') ; then
num=${#arra[@]}
fi
arra=(${arra[@]} $(cat $1| wc -l))
for ((i=0;i<$num;i++)); do
beg=${arra[$i]}
extract $1 crs_key; contextid=$key; id=$key
extract $1 stuid; username="s$key";lastname=$key
extract $1 scr_kind; scr_kind=$key
scr_kind=$(echo $scr_kind| tr a-z A-Z)
extract $1 crs_no; crs_no=$key
done