Chinaunix

标题: shell 下的报表打问题? [打印本页]

作者: wangnb    时间: 2004-03-27 12:08
标题: shell 下的报表打问题?
我生成了一个文件FILE.1内容如下:
aa=123456789
bb=2222222
name=刘德华
aa=66666666
bb=77777777
name=张学友
aa=44444444
bb=55555555
name=刘欢
...
...
...
我想在打印机上输出如下格式:
+---------------------------------------------------------------+
|   aa                 |               bb              |       name     |
+---------------------------------------------------------------+
|123456789      |    2222222               | 刘德华           |
+---------------------------------------------------------------+
|666666666      |    777777777           | 张学友           |
+---------------------------------------------------------------+
|444444444      |    555555555           | 刘欢              |
+---------------------------------------------------------------+
|      .........         |           ......                |    .......          |
+---------------------------------------------------------------+
请大虾指点一下,在shell下如何实现...急...
作者: labrun    时间: 2004-03-27 12:36
标题: shell 下的报表打问题?
  1. cat file | xargs -n 3 | awk 'BEGIN{print"+----------------+\n|aa|bb|name|\n+---------------+"}{a[NR]=substr($1,4);b[NR]=substr($2,4);name[NR]=substr($3,6)}END{ for(i=1;i<=NR;i++)print a[i],"|",b[i],"|",name[i],"|\n+--------------------------+"}'
复制代码

我在redhat9上试过的,其它系统不知道。
作者: 黑骏马    时间: 2004-03-28 14:53
标题: shell 下的报表打问题?
用AWK得行
作者: 大红机器    时间: 2004-03-29 08:41
标题: shell 下的报表打问题?
awk版的
  1. awk -F= '{x=x"|"$2;if($1=="name"){printf("+------------------------+\n%s|\n",x);x=y}}END{print "+------------------------+"}' file
复制代码

作者: wangnb    时间: 2004-03-29 13:38
标题: shell 下的报表打问题?
多谢大家指导,我这就去试试。。。
作者: wangnb    时间: 2004-03-29 14:45
标题: shell 下的报表打问题?
labrun
我试过你写的代码,可经实现,但如每个变量长度不一样,如何在表中对齐,还有变量中如有空格就无法正常输出了,还请大虾指点。。。
作者: labrun    时间: 2004-03-30 15:31
标题: shell 下的报表打问题?
把print改为printf:
printf("%5s %5s %5s %5s %5s %5s\n",a,"|",b,"|",name,"|\n+--------------------------+"
作者: wangnb    时间: 2004-03-31 14:29
标题: shell 下的报表打问题?
谢了,我已实现,不知您有关于SHEKK和AWK方面的学习资料如有可以给我一份吗?在下感谢万分!!!!!!



E-MAIL: wangnb@tom.com
作者: wangnb    时间: 2004-04-08 14:49
标题: shell 下的报表打问题?
labrun 你好,我又有事请教。
   我使用你的代码经过修改,在终端上打印出了不错的报表可是还一个问题我无法解决,可能是我对AWK 太莫生了,我改了N次都不行,请高手救我。。。
问题:文件记录太多时出现了无法分页,我想在每打印30条记录之后,就重新加入报表表名打印,我在代码里打入FOR(。。。)循环,可是不行,我想我对(NR BEGIN END )还没理解。可以给我写一段吗?在此小弟万分感谢!!!!!!
作者: wangnb    时间: 2004-04-08 14:51
标题: shell 下的报表打问题?
labrun 你好,我又有事请教。
我使用你的代码经过修改,在终端上打印出了不错的报表可是还一个问题我无法解决,可能是我对AWK 太莫生了,我改了N次都不行,请高手救我。。。
问题:文件记录太多时出现了无法分页,我想在每打印30条记录之后,就重新加入报表表名打印,我在代码里打入FOR(。。。)循环,可是不行,我想我对(NR BEGIN END )还没理解。可以给我写一段吗?在此小弟万分感谢!!!!!!
作者: admirer    时间: 2004-04-08 15:39
标题: shell 下的报表打问题?
  1. cat datafile | sed 's/^.*=//' | sed 'N;N;s/\n/ /g' | awk 'BEGIN{T="+--------------+--------------+--------------+"}{ printf("%s\n|%13s |%13s |%13s |\n",T,$1,$2,$3); if(j++==30) { print "\f" } else { j=0 } }END{print T}'
  2. +--------------+--------------+--------------+
  3. |    123456789 |      2222222 |       刘德华 |
  4. +--------------+--------------+--------------+
  5. |     66666666 |     77777777 |       张学友 |
  6. +--------------+--------------+--------------+
  7. |     44444444 |     55555555 |         刘欢 |
  8. +--------------+--------------+--------------+
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2