博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

睡前要抱抱

   mash.cublog.cn
关于作者  
mystérieux

我的分类  




[Bash脚本] 按列统计整数变化
一个文件中有几组以空格隔开的整数:
$ 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

 发表于: 2008-04-29,修改于: 2008-08-26 04:33 已浏览167次,有评论0条 推荐 投诉

  网友评论

  发表评论



Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们
页面生成时间:0.34113

京ICP证041476号