我的源文件中有这样的行:
"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} - >指源文件。
答案 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};