我需要使用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列上放置正确的条件。
答案 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;否则。