我有一个包含不同信息的数组列表,我正在做awk。
number location length value
1 2 40 0.96
--- 5 45 0.97
4 5 47 0.96
--- 5 35 0.95
2 5 60 0.95
--- 3 55 0.96
awk '{if ($2=5 && $3 >= 40 && $3<=50 && $6>=0.96) print $0}' Infile.txt
它确实为我提供了正确的行--- 5 45 0.97
和4 5 47 0.96
。
但是,如果我想添加其他条件(例如$1= ---
),则只有第一个输出--- 5 45 0.97
awk '{if ($2=5 && $3 >= 40 && $3<=50 && $6>=0.96 && $1="\-\-\-") print $0}' Infile.txt >List_position.txt
它充当替代,将之前的输出返回为1 5 45 0.97
和1 5 47 0.96
。
我尝试使用$1=---
,$1='\-\-\-'
,但两者都没有用。如果我尝试使用$1="---"
,则会将$ 1替换为---
。
我是awk的新手,我真的不明白为什么要替换它。如果" "
是awk中的替换,我如何在---
上添加条件?
答案 0 :(得分:3)
您已完成作业=
而不是比较==
(并且作业的结果评估为true,因为它既不是0也不是空字符串。)
awk '{if ($2==5 && $3 >= 40 && $3<=50 && $6>=0.96 && $1=="---") print }' Infile.txt >List_position.txt
条件中=
与==
分配的$2=5
vs {{1}}'问题,但您没有注意到它,因为您希望在那里看到5(和感谢JS웃指出了这一点。
您也不需要反斜杠。