Awk充当替代品

时间:2013-06-19 15:51:54

标签: awk substitution

我有一个包含不同信息的数组列表,我正在做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.974 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.971 5 47 0.96。 我尝试使用$1=---$1='\-\-\-',但两者都没有用。如果我尝试使用$1="---",则会将$ 1替换为---

我是awk的新手,我真的不明白为什么要替换它。如果" "是awk中的替换,我如何在---上添加条件?

1 个答案:

答案 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웃指出了这一点。

您也不需要反斜杠。