双美元符号 ($$) 是什么意思?

Kaj*_*quo 5 awk

我根本不明白这行 awk 代码是如何工作的。

$$1~/^[^0-9]/ {print $$1;}
Run Code Online (Sandbox Code Playgroud)

kva*_*our 6

$符号是 awk 中引用字段的运算符。例子:

$ echo "foo bar car" | awk '{print $2}'
bar
Run Code Online (Sandbox Code Playgroud)

这将打印barbar第二个字段的内容也是如此。

双美元符号实际上是一个双重引用,它将使用第一个字段引用的信息来获取另一个字段引用。例子:

$ echo "foo bar car 1 2 3" | awk '{print $$5}'
bar
$ echo "foo bar car 1 2 3" | awk '{print $5}'
2
Run Code Online (Sandbox Code Playgroud)

这里它打印bar$5取消引用为2,因此$$5相当于$2

  • 为了使其更易于阅读/理解,您可以使用这样的括号: `awk '{print $($5)}'` 它会首先展开括号,给出 `2`,然后得到 `$2`,给出 `酒吧`。`echo "foo 3 汽车 1 2 3" | awk '{print $$$5}' => car` 或 `echo "foo 3 car 1 2 3" | awk '{print $($($5))}' = 汽车` (3认同)