- 论坛徽章:
- 0
|
# cat file
aaa123
bbb1234
ccc1234567
如何能用awk求出这一列的最大宽度是10个字符?
其实这个问题是由另一个问题引出来的,
2009-08-09, Sun 00:01:02 0735huyh ip:134.165.11.2
2009-08-09, Sun 00:01:51 0746jqls ip:134.172.68.253
2009-08-09, Sun 00:05:15 0730tx ip:134.170.77.177
2009-08-09, Sun 00:09:38 0735huyh ip:134.165.11.2
2009-08-09, Sun 00:12:54 0735xujy ip:134.165.176.106
2009-08-09, Sun 00:13:04 0736yangj2 ip:134.166.169.79
2009-08-09, Sun 00:16:48 0746nyayy ip:134.172.68.246
2009-08-09, Sun 00:18:27 why ip:134.160.98.6
上面这段记录每个域是由/t即tab键分开的,但因为第四个域长短不一,所以导到第五个域显示不是很齐。
当然我用awk中的printf指定一下那几个域外的列宽,这个问题就貌似解决了,
# awk '{printf("%s\t%s\t%s\t%-25s%-25s\n",$1,$2,$3,$4,$5)}' file
2009-08-09, Sun 00:01:02 0735huyh ip:134.165.11.2
2009-08-09, Sun 00:01:51 0746jqls ip:134.172.68.253
2009-08-09, Sun 00:05:15 0730tx ip:134.170.77.177
2009-08-09, Sun 00:09:38 0735huyh ip:134.165.11.2
2009-08-09, Sun 00:12:54 0735xujy ip:134.165.176.106
2009-08-09, Sun 00:13:04 0736yangj2 ip:134.166.169.79
2009-08-09, Sun 00:16:48 0746nyayy ip:134.172.68.246
2009-08-09, Sun 00:18:27 why ip:134.160.98.6
但因为我不能确定第四个域中的最长的那条记录是多少个符,所以就不得不在printf时指定一个比较长的字符宽度。但这样还是不确定,即万一实际上最长的那个记录的字符宽度比我指定的还长,那显示就会在某一行又不对齐了。
不知道兄弟们在处理这种情况时有什么好方法吗?向大家请教了。 |
|