如何编写具有特定条件的awk代码

发布于 2025-01-09 10:20:31 字数 313 浏览 0 评论 0原文

我想创建一个对一行数据中一定数量的数据进行操作的代码,为此我只想计算负数,通过乘以负数本身使它们成为正数 示例

数据

10
11
-12
-13
-14

预期输出

10
11
144
169
196

这是我一直在尝试的,

awk 'int($0)<0 {$4 = int($0) + 360} 
     END {print $4}' data.txt

但我什至没有得到输出,任何人都可以帮助我吗?

I want to create a code that operates on a certain number of a row of data, for which I just want to count negative numbers to make them positive by multiplying by the number itself negative
example

data

10
11
-12
-13
-14

expected output

10
11
144
169
196

this is what I've been try

awk 'int($0)<0 {$4 = int($0) + 360} 
     END {print $4}' data.txt

but I don't even get the output, anyone can help me?

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

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

发布评论

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

评论(4

故事未完 2025-01-16 10:20:31
awk '$0 < 0 { $0 = $0 * $0 } 1' data.txt

当第一个条件为负时,将值乘以自身。条件 1 始终为 true,因此该行将无条件打印。

awk '$0 < 0 { $0 = $0 * $0 } 1' data.txt

The first condition multiplies the value by itself when it's negative. The condition 1 is always true, so the line is printed unconditionally.

银河中√捞星星 2025-01-16 10:20:31

还:

awk '{print($0<0)?$0*$0:$0}' input

Also:

awk '{print($0<0)?$0*$0:$0}' input
伴梦长久 2025-01-16 10:20:31
$ awk '{print $0 ^ (/-/ ? 2 : 1)}' file
10
11
144
169
196
$ awk '{print $0 ^ (/-/ ? 2 : 1)}' file
10
11
144
169
196
撩心不撩汉 2025-01-16 10:20:31

您还可以仅匹配以 - 开头的数字,在这种情况下,将它们各自相乘

awk '{print (/^-[0-9]+$/ ? $0 * $0 : $0)}' data.txt

输出

10
11
144
169
196

You could also match only digits that start with - and in that case multiply them by themselves

awk '{print (/^-[0-9]+$/ ? $0 * $0 : $0)}' data.txt

Output

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