相关疑难解决方法(0)

有两种方法可以通过命令行设置 awk 变量吗?

我注意到一个 O'Reillyawk示例(1997),它通过在程序文本之后的命令行上设置它来分配一个 awk 变量。它确实有效,但我在man / info awk 中找不到这种语法。我刚刚错过了吗?它被贬低了吗……?我在手册中看到的唯一语法是-v选项。

awk '/home/{print foo, bar}' foo="cat" bar="dog" /proc/$$/cmdline
Run Code Online (Sandbox Code Playgroud)

输出: cat dog

awk

11
推荐指数
1
解决办法
1130
查看次数

在 awk 中使用 shell 变量

这是我的脚本(查找包含指定模式的文件):

find . -type f \
    -exec awk -v vawk="$1" '/'"$vawk"'/ {c++} c>0 { print ARGV[1]; exit 0 } END { if (! c) {exit 1}}' \{\} \;
Run Code Online (Sandbox Code Playgroud)

我想将我的脚本与参数 § 一起使用:

MyScript.sh pattern
Run Code Online (Sandbox Code Playgroud)

我的问题是我无法将$1变量放入awk.

当我尝试调试我的脚本时

bash -x MyScript.sh pattern
Run Code Online (Sandbox Code Playgroud)

这是输出:

+ find . -type f -exec awk -v vawk=pattern '// {c++} c>0 {print ARGV[1] ; exit 0 } END { if (! c) {exit 1}}' '{}' ';'
Run Code Online (Sandbox Code Playgroud)

$vawk变量似乎是空的。

任何的想法?

bash awk variable

10
推荐指数
2
解决办法
3276
查看次数

标签 统计

awk ×2

bash ×1

variable ×1