2016-06-07 70 views
-1

我試圖匹配一個shell變量與逗號分隔的第二列。 所以我給自己定$ INOWLS和命令看起來像這樣如何匹配awk中的shell變量?

awk -F"," '$2 == $INOW {print "yeah it's there"}' commands.csv 

我試圖把大約$ INOW報價。沒有不同。我如何與shell變量匹配?

回答

2

你不能直接在awk中使用shell變量。相反,你可以創建一個使用-v

$ a_variable=hello 
$ awk -v var="$a_variable" "{print var}" 
hello 

所以你的情況,你可以編寫一個awk變量,

$ awk -F"," -v inow="$INOW" '$2 == inow {print "yeah its there"}' commands.csv 
+0

我明白了,我嘗試過,但它由於某種原因不工作。它顯示了不完整的命令。即在我發出你的命令之後,對我而言,這就出現了。 –

+0

$ awk -F「,」-v inow =「$ INOW」'$ 2 == inow {print「yeah it's there」}'commands.csv then in the next lines > > –

+0

@HrishikeshBarman您有一個語法錯誤。在你寫的命令中有額外的''''。要麼刪除它或逃脫 – nu11p01n73R

0
awk -F"," '{if($2 == '$INOW') {print "yeah its there"}else{print "nope"}}' commands.csv 
+0

$ INOW似乎沒有被評估。因爲else部分正在評估,但if部分不是。 $ INOW是真的。 –