以整数形式转换ascii文件列

时间:2015-05-06 10:40:55

标签: c++ perl awk grep integer

我有一个包含两列的文件,以空格分隔。第一列是整数,第二列是double。我的文件格式如下

1 201.45
2 201.42
3 202.92

...

我想要做的是用两个整数列打印相同的文件。新文件应该是那样的

1 201
2 201
3 203

...

我尝试使用awk提供以下命令

awk '{print $1 " " (int) $2}' file.dat

但正如预期的那样,它不起作用。

关于如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分:2)

字面上只需要添加0.5

awk '{print $1,int($2+0.5)}' file.dat

答案 1 :(得分:1)

perl怎么样:

perl -lne "print join ( ' ', map { int $_ + 0.5 } split);" file.dat

给出:

1 201
2 201
3 203

注意:技巧是 - 添加0.5因为int向下舍入,所以这会得到所需的结果。