- 论坛徽章:
- 0
|
非常感谢各位U友,对各位的回复进行测试确认如下:
楼号 UID 是否实际测试 是否Ok 原因
2楼 jinl 未实际测试 Nok 根据我对语句理解,是对每个字段都进行了格式转换,这个可能是jinl兄没有注意仅转换指定列的要求!
3,5,9,10,14,15 ywlscpl 测试15楼代码 Nok 除标题行外,数据列处理ok,但是标题行被丢弃, 所以仅需要再将源文件标题行不经转换原样输出到目标文件就完美了
4,6,8,11 ynchnluiti (andy) 未实际测试 N/A 首先指出printf的错误使用,指明应该使用sprintf
7 welcome008 未实际测试 N/A 忽略了我对标题行还是需要的,只是不能对其进行转换,所以不可将NR==1;简化
12 我是DBA 未实际测试 N/A 帮助指正sprintf与printf的差别
13 ly5066113 未实际测试 N/A 对sprintf与printf的差别给予明确的提示性指正
经过对15楼的测试,标题行被丢弃
然后对3楼更改printf改为sprintf后进行测试,结果Ok!
最终正确完美结果为:
$Rep_Tools/gawk 'BEGIN {FS=OFS=";"} NR==1;NR>1{$165=sprintf("%d",$165);$166=sprintf("%d",$166);$167=sprintf("%d",$167);$168=sprintf("%d",$16 ;$205=sprintf("%d",$205);print}' BTSorg.txt > BTS.txt
非常感谢U友的及时解惑,不但解决了问题,也从中了解到print,printf,sprintf之间的部分差别,对于NR变量的理解也更进了一步,更加深了awk指令的使用规则!
对我另一个问题的早日解决也将更加有信息了!
超多字段的文本想使用awk分裂为多个文件,寻求帮助!
http://bbs.chinaunix.net/thread-1344668-1-2.html |
|