打印

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

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

[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显示的结果,中间的间隔不一样大小?

TOP

晕倒,贴出来的结果和机器上的显示不一样?

TOP

我机器上显示的awk的结果中,第一行和最后一行的两个域之间中间间隔特别大。怎么回事?这是公社里的一个教程上的例子。

TOP

"\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.

TOP

在显示的五行结果中第一行和最后一行的$1和$4中间是一个tab,而其它三行的中间只是一个空格,我想可能是设置的原因,具体要怎么设置?比较菜,用中文写出来好不好?英文太费劲。

TOP

在学校的时候没有中文输入法,只能用英文了,多担待。

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

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

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

TOP

非常非常感谢。

TOP