【发布时间】:2011-02-17 10:20:37
【问题描述】:
我有以下数据集(所有正值)
输入文件
1 2.3456
1 5.02
2 3.9763333
2 0.123
我想截断第二列中的数字并丢弃其非整数部分。
如何在 awk 中做到这一点?
所需的输出文件
1 2
1 5
2 3
2 0
感谢您的帮助。
【问题讨论】:
标签: awk
我有以下数据集(所有正值)
输入文件
1 2.3456
1 5.02
2 3.9763333
2 0.123
我想截断第二列中的数字并丢弃其非整数部分。
如何在 awk 中做到这一点?
所需的输出文件
1 2
1 5
2 3
2 0
感谢您的帮助。
【问题讨论】:
标签: awk
试试 int() 函数
awk '{$2=int($2)}1' file
【讨论】:
awk '{printf("%d %d\n"), $1, $2;}' inputFileName
【讨论】:
由于您要截断而不是舍入,请使用%d 而不是%0.f:
awk '{printf "%s %d\n", $1, $2}'
【讨论】:
以下应该这样做
{ printf "%s %.0f\n", $1, $2}
【讨论】:
%d 优于 %.0f,因为 %.0f 循环和 %d 截断。
我给每个人都投了赞成票,但为了好玩,这里还有一个:)
awk '{split($2,a,"."); print $1" "a[1]}'
【讨论】:
awk -F"[ \t.]" '{print $1, $2}' file。无需创建额外的数组。 :)
$(NF-1)
如果其他人搜索如何设置数字,例如 -0.1 转换为 -1,您可以执行以下操作:
$ printf %s\\n -1 -.9 -.1 0 .1 .9 1|awk '{x=int($0);print(x==$0||$0>0)?x:x-1}'
-1
-1
-1
0
0
0
1
【讨论】: