QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1013|回复: 6

问一个awk的问题,莫名其妙,希望指点一二

[复制链接]
发表于 2002-12-22 00:37:47 | 显示全部楼层 |阅读模式
[root@localhost test]# more grade.txt
M.Tansley     05/99     48311     Green     8     40    44
J.Lulu        06/99     48317     green     9     24    26
P.Bunny       02/99     48        Yellow    12    35    28
J.Troll       07/99     4842      Brown-3   12    26    26
L.Tansley     05/99     4712      Brown-2   12    30    28
[root@localhost test]# awk 'BEGIN {print "name     belt\n----------------------"}{print $1"\t"$4}' grade.txt
name     belt
----------------------
M.Tansley       Green
J.Lulu  green
P.Bunny Yellow
J.Troll Brown-3
L.Tansley       Brown-2

为什么用awk显示的结果,中间的间隔不一样大小?
 楼主| 发表于 2002-12-22 00:39:08 | 显示全部楼层
晕倒,贴出来的结果和机器上的显示不一样?
回复

使用道具 举报

 楼主| 发表于 2002-12-22 00:41:44 | 显示全部楼层
我机器上显示的awk的结果中,第一行和最后一行的两个域之间中间间隔特别大。怎么回事?这是公社里的一个教程上的例子。
回复

使用道具 举报

发表于 2002-12-22 10:48:17 | 显示全部楼层
"\t" means a tab, so it is perfectly normal to have a large gap anywhere.  I think you know what a tab is, don't you?

If you want a particular output format, you can use C-like printf() format in awk.
回复

使用道具 举报

 楼主| 发表于 2002-12-22 13:44:33 | 显示全部楼层
在显示的五行结果中第一行和最后一行的$1和$4中间是一个tab,而其它三行的中间只是一个空格,我想可能是设置的原因,具体要怎么设置?比较菜,用中文写出来好不好?英文太费劲。
回复

使用道具 举报

发表于 2002-12-22 16:09:49 | 显示全部楼层
在学校的时候没有中文输入法,只能用英文了,多担待。

既然是 tab,宽度当然和前面字符的长度有关,你如果不熟悉 tab 的话,自己在文本编辑器里输入一下你的 awk 结果就应该明白了。

如果要仔细调节输出格式可以用 printf() 函数,用法和 C 里面是一样的。

如果你对 C 也不熟悉,我恐怕也没有时间详细讲。找一本 C 的书看一看输入输出部分吧。或者把你需要的格式说一下,我帮你写 printf() 的格式。
回复

使用道具 举报

 楼主| 发表于 2002-12-22 17:12:37 | 显示全部楼层
非常非常感谢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-5-20 13:49 , Processed in 0.194444 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表