根据另一列的值在新列中打印特定值

时间:2017-11-21 10:29:34

标签: bash awk

我需要使用awk,bash将阈值打印到一个文件。

file.txt的

device_1  200.33   1000.50
device_2  12.00    2000.11
device_3  400.22   6000.32
device_4  34.11    2000.11

我需要设置一个条件并打印thresold(这是我的尝试):

cat file.txt |  awk '{if ($2 < 50); print $1, $2, $3, $4="97%" };elseif { ($2 > 50); print $1,$2,$3, $4="80%";}'

“IF $ 2&lt; 50,打印97%,否则打印80%”:预期输出

device_1 200.33 1000.50 80%
device_2 12.00  2000.11 97%
device_3 400.22 6000.32 80%
device_4 34.11  2000.11 97%

没有在第2列上放置正确的条件。

1 个答案:

答案 0 :(得分:3)

123 is right关于if语句的正确构造:

  

你立即用半结肠结束if。应该是if(condition){do stuff}else if (condition){do stuff} else {do stuff}

尽管如此,由于您打算根据上下文打印一个或另一个值,您可以直接找一个三元运算符并说:

awk '{print $1, $2, $3, ($2 < 50 ? "97%" : "80%")}' file

哪个输出:

device_1 200.33 1000.50 80%
device_2 12.00 2000.11 97%
device_3 400.22 6000.32 80%
device_4 34.11 2000.11 97%

表达式print $1, $2, $3, ($2 < 50 ? "97%" : "80%")说:print $ 1,$ 2和$ 3;然后,另一个领域包括&#34; 97%&#34;如果$ 2&lt; 50或&#34; 80%&#34;否则。