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

Awk 双美元符号($$)是什么意思?,awk,Awk,我简直搞不懂这行awk代码是如何工作的 $$1~/^[^0-9]/ {print $$1;} $符号是awk中引用字段的运算符。例如: $ echo "foo bar car" | awk '{print $2}' bar 这将打印bar,因为bar是第二个字段的内容 双美元符号实际上是一个双重引用,它将使用第一个字段引用的信息到达另一个字段引用。例如: $ echo "foo bar car 1 2 3" | awk '{print $$5}' bar $ echo "foo bar ca

我简直搞不懂这行awk代码是如何工作的

$$1~/^[^0-9]/ {print $$1;}

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

$ echo "foo bar car" | awk '{print $2}'
bar
这将打印
bar
,因为
bar
是第二个字段的内容

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

$ echo "foo bar car 1 2 3" | awk '{print $$5}'
bar
$ echo "foo bar car 1 2 3" | awk '{print $5}'
2

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

如果这是一个生成文件,我不会感到非常惊讶。不过,以下可能是相关的:为了使阅读/理解更简单,您可以使用这样的括号:
awk'{print'$($5)}'
它将首先展开括号,给出
2
,然后你得到
$2
,它给出
bar
echo“foo3car1233”| awk'{print$$$5}=>car
echo“foo3car1233”| awk'{print$($($5))}'=car