如何在IF条件内应用2个awk?

问题描述 投票:0回答:1

我有一个具有以下格式的文件:

name   3  4
name  -4  3
name  -5  4
name   2 -4 

我想使此子指令为$ 2- $ 3,并在文件的开头添加一个额外的列,并在第二列的基础上加上-/ +号,以获取以下格式:

   - name  -1  3  4
   - name  -7 -4  3
   - name  -9 -5  4
   + name   6  2 -4 

我使用了此命令

awk '{print $1,$2-$3,$2,$3}' FILE |if ($2 < 0 ) then awk '{print "-",$0}' ; else awk '{print "+",$0}'; fi 

哪个给予:

   - name  -1  3  4
   - name  -7 -4  3
   - name  -9 -5  4
   - name   6  2 -4 

我试图用大括号“玩”,但似乎我的情况在第一次awk之后就停止了。我的命令有什么错?

if-statement awk command
1个回答
2
投票

您能不能尝试以下操作。

awk '{$1=$2>$3?"+":"-" OFS $1 OFS $2-$3} 1' Input_file

如果要用TAB分隔输出,请尝试以下操作。

awk 'BEGIN{OFS="\t"} {$1=$2>$3?"+":"-" OFS $1 OFS $2-$3} 1' Input_file
© www.soinside.com 2019 - 2024. All rights reserved.