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 下的报表打问题?
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版的
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 下的报表打问题?
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}'
+--------------+--------------+--------------+
| 123456789 | 2222222 | 刘德华 |
+--------------+--------------+--------------+
| 66666666 | 77777777 | 张学友 |
+--------------+--------------+--------------+
| 44444444 | 55555555 | 刘欢 |
+--------------+--------------+--------------+
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2