以下是我的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附近,并没有任何区别。
答案 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"
^^ ^