使用awk进行精确匹配时没有结果

时间:2016-11-03 14:47:44

标签: unix awk

我的源文件中有这样的行:

"Sumit|My Application|PROJECT|1|6|Y|20161103084527"

我想在第3栏进行精确匹配,即我不想使用'〜'编写我的awk命令时的操作符。但是命令:

awk -F '|' '($3 ~ /'"$Var_ApPJ"'/) {print $3}' ${Var_RDR}/${Var_RFL};

正在获取正确的结果但命令:

awk -F '|' '($3 == "${Var_ApPJ}") {print $3}' ${Var_RDR}/${Var_RFL};

没有这样做。任何人都可以帮助解释它为什么会发生,我愿意使用' =='因为我不想匹配,如果值是" PROJECT1"在源文件中。

参数Var_ApPJ =" PROJECT"

$ {Var_RDR} / $ {Var_RFL} - >指源文件。

3 个答案:

答案 0 :(得分:0)

请参阅文档的this part以了解如何将变量传递给awk。

答案 1 :(得分:0)

这是问题 -

尝试以下命令 -

awk -F '|' '$3 == Var_ApPJ {print $3}' ${Var_RDR}/${Var_RFL};

删除花括号和括号。

vipin@kali:~$ cat kk.txt
a 5 b cd ef gh
vipin@kali:~$ awk -v var1="5"  '$2 == var1 {print $3}' kk.txt
b
vipin@kali:~$

OR

#cat kk.txt
a 5 b cd ef gh
#var1="5"
#echo $var1
5
#awk '$2 == "'"$var1"'" {print $3}' kk.txt  ### With "{}"
b
#
#awk '$2 == "'"${var1}"'" {print $3}' kk.txt  ### without "{}"
b
#

答案 2 :(得分:0)

我找到了'='的替代方式'〜':

awk -F'|' '($ 3~“^ $ {Var_ApPJ}”$){print $ 3}'$ {Var_RDR} / $ {Var_RFL};