如何在 awk 中截断实际值并丢弃其非整数部分?

发布于 2024-10-17 17:24:57 字数 223 浏览 1 评论 0原文

我有以下数据集(所有正值)

输入文件

1 2.3456
1 5.02
2 3.9763333
2 0.123

我想截断第二列中的数字并丢弃其非整数部分。

在 awk 中如何做到这一点?

所需的输出文件

1 2
1 5
2 3
2 0

感谢您的帮助。

I have the following dataset (all positive values)

Input file

1 2.3456
1 5.02
2 3.9763333
2 0.123

I would like to truncate the numbers in the second column and discard its non-integer part.

How would one do it in awk?

Desired output file

1 2
1 5
2 3
2 0

Thanks for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

菊凝晚露 2024-10-24 17:24:57

尝试 int() 函数

awk '{$2=int($2)}1' file

try the int() function

awk '{$2=int($2)}1' file
中二柚 2024-10-24 17:24:57
awk '{printf("%d %d\n"), $1, $2;}' inputFileName
awk '{printf("%d %d\n"), $1, $2;}' inputFileName
時窥 2024-10-24 17:24:57

由于您想要截断而不是舍入,请使用 %d 而不是 %0.f

awk '{printf "%s %d\n", $1, $2}'

Since you want to truncate rather than round, use %d instead of %0.f:

awk '{printf "%s %d\n", $1, $2}'
爱殇璃 2024-10-24 17:24:57

以下应该执行此操作

{ printf "%s %.0f\n", $1, $2}

The following should do this

{ printf "%s %.0f\n", $1, $2}
呆头 2024-10-24 17:24:57

我已经给每个人都投了赞成票,但为了好玩,这里还有另一个:)

awk '{split($2,a,"."); print $1" "a[1]}'

I've upvoted everyone but for the fun of it here's another one:)

awk '{split($2,a,"."); print $1" "a[1]}'
Spring初心 2024-10-24 17:24:57

如果其他人搜索如何将数字下限,例如 -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

If others search for how to floor numbers so that for example -0.1 is converted to -1, you can do something like this:

$ 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文