我已经对grep -c ^str file
进行了awk实现,我希望从shell脚本中传递file
和str
个参数。我使用awk -v
两次传递参数但我收到awk: cannot open var1 (No such file or directory)
错误。
我无法绕过它,我已经尝试了将近一个小时。
我的代码:
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}'
答案 0 :(得分:2)
应该是:
awk -v var1="$file" -v var2="$str" 'BEGIN{print var1; print var2}{/^var2/}' $file
awk
变量只能在awk
代码中加入(在本例中由单引号分隔),而不是 shell 级别,其中var1
表示无效。
请注意,var2
值只是斜杠 /^var2/
之间的文字字符串,而是使用$0 ~ "^"var
来访问var2
值。
事实上,您的awk
代码可以重写为:
awk -v var="$str" '$0 ~ "^"var && $0 != "/s"{count++}END{print count}' $file