3

以下は私のbashスクリプトです。変数 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 の前後に "" を配置しても、違いはありません。

4

2 に答える 2

6

それ以外の:

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

次のように使用します。

awk -F "," -v oid="$oid" '$5 == oid' "$SYMBOL_CSV_FILE"
于 2013-08-13T11:51:10.213 に答える
1

bash が変数を解釈するには、二重引用符を使用する必要があります。一重引用符はそのままプログラムに送信$oidされます。

それから、$5も解釈されるように、したくない !をエスケープする必要があり$ます。

最終的に、次のようになります。

awk -F, "\$5 == $oid" "$SYMBOL_CSV_FILE"
        ^^          ^
于 2013-08-13T11:50:47.273 に答える