2016-12-27 29 views
1

我做了一個awk實現grep -c ^str file,我想從shell腳本傳遞參數filestr。我使用awk -v兩次來傳遞參數,但我得到一個awk: cannot open var1 (No such file or directory)錯誤。 我只是無法繞過它,我已經嘗試了將近一個小時。 我的代碼:AWK:傳遞兩個參數和奇怪的錯誤

read -p "Give me a file name " file 
read -p "Give me a string " str 
awk -v var1="$file" -v var2="$str" 'BEGIN{print var1; print var2}{/^var2/}' var1 | 
awk '{if ($0 != "/s") {count++}} END {print count}' 

回答

2

它應該是:

awk -v var1="$file" -v var2="$str" 'BEGIN{print var1; print var2}{/^var2/}' $file 

awk瓦爾僅能在awk代碼(用單引號在這種情況下,分隔)不被加入在外殼水平,var1意味着什麼。

注意var2價值將只有之間的文本字符串斜線/^var2/,使用$0 ~ "^"var而不是訪問var2值。

awk -v var="$str" '$0 ~ "^"var && $0 != "/s"{count++}END{print count}' $file 
+1

謝謝:

事實上,你awk代碼可以作爲被改寫!那麼執行'-v var1 =「$ file」'沒有意義? –

+0

絕對不是:P @ Dinos_12345 – klashxx

+1

結帳我的更新,以避免雙awk代碼 – klashxx