一个文件中有几组以空格隔开的整数:
$ cat foo
5 7 3 1 0
1 7 1 2 3
2 0 4 9 6
2 8 1 1 3
用下面的脚本gle从第二行对数字开始统计,与本列上一个数字比较,变大为G, 变小为L, 相等为E :
$ cat gle
#!/bin/bash exec 3< $1 sed q "$1" read -u3 -a next while true do declare -a prev=(`echo ${next[@]}`) read -u3 -a next i=0 printf "%c " "${next[@]}" printf '\t' while [ $i -lt ${#next[@]} ] do # test ${next[i]} -gt ${prev[i]} && printf 'G ' # test ${next[i]} -lt ${prev[i]} && printf 'L ' # test ${next[i]} -eq ${prev[i]} && printf 'E ' [[ "${next[i]}" -gt "${prev[i]}" ]] && printf 'G ' [[ "${next[i]}" -lt "${prev[i]}" ]] && printf 'L ' [[ "${next[i]}" -eq "${prev[i]}" ]] && printf 'E ' let i+=1 done printf '\n' if [ -z $next ] then break fi done |
输出:
$ gle foo
5 7 3 1 0
1 7 1 2 3 L E L G G
2 0 4 9 6 G L G G G
2 8 1 1 3 E G L L L
阅读(2327) | 评论(0) | 转发(0) |