当使用变量进行比较时,awk无法在bash脚本中工作

时间:2013-08-13 11:48:57

标签: linux bash shell

以下是我的bash脚本。如果我使用varible oid在awk中进行比较,它不会显示匹配的行。

oid="3586302804992"
SYMBOL_CSV_FILE="symbol/BAC"
awk -F, '$5 == $oid' "$SYMBOL_CSV_FILE"
echo "2nd"
awk -F, '$5 == "3586302804992"' "$SYMBOL_CSV_FILE"

O / P

2nd
BAC,1,O,1,3586302804992

symbol/BAK文件内容

BAC,1,O,1,3586302804992o

在第3行,将$“放在$ oid附近,并没有任何区别。

2 个答案:

答案 0 :(得分:5)

而不是:

awk -F, '$5 == $oid' "$SYMBOL_CSV_FILE"

像这样使用它:

awk -F "," -v oid="$oid" '$5 == oid' "$SYMBOL_CSV_FILE"

答案 1 :(得分:1)

要让bash解释你的变量,你必须使用双引号。单引号会将$oid发送给您的程序。

然后,因为$5也将被解释,而你不想!你必须逃避$

最后,你有:

awk -F, "\$5 == $oid" "$SYMBOL_CSV_FILE"
        ^^          ^