2016-12-27 27 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