如果第一列匹配则处理第二列

时间:2019-07-12 17:28:46

标签: bash awk

如果第一列与我定义的参数匹配,我只希望第二列乘以exp(3)。

cat inputfile.i

100 2
200 3
300 1


100 5
200 2
300 3

我希望输出为:

100 2
200 60.25
300 1

100 5
200 40.17
300 3

我尝试了以下代码:

awk ' $1 == "200" {print $2*exp(3)}'  inputfile 

但实际上什么也没显示

2 个答案:

答案 0 :(得分:2)

您不会打印不匹配的行,无需引用数字

$ awk '$1==200{$2*=exp(3)}1' file

100 2
200 60.2566
300 1


100 5
200 40.1711
300 3

答案 1 :(得分:0)

inputfile.i和inputfile之间有区别吗?

无论如何,这是我为您提供的解决方案:

awk '$1 == 200 {printf "%s %.2f\n",$1,$2*exp(3)};$1 != 200 {print $0}'  inputfile.i
100 2
200 60.26
300 1


100 5
200 40.17
300 3