'how to write awk code with specific condition

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?



Solution 1:[1]

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.

Solution 2:[2]

Also:

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

Solution 3:[3]

$ awk '{print $0 ^ (/-/ ? 2 : 1)}' file
10
11
144
169
196

Solution 4:[4]

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

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Barmar
Solution 2 William Pursell
Solution 3 Ed Morton
Solution 4