[Bash脚本] 按列统计整数变化

2355阅读 0评论2008-04-28 mystérieux
分类:

一个文件中有几组以空格隔开的整数:
$ 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
上一篇:我的 CFLAGS
下一篇:故障:dpkg was interrupted