Awk 这个函数是什么意思?函数$$1

Awk 这个函数是什么意思?函数$$1,awk,Awk,这是我第一次看到这种用法。不幸的是,我找不到相关信息 awk '{print $$1}' $$1是干什么的?它是一个数组吗 $echo-e“2 2 3 4 \n2 22 3 4 5 6 \na 2 3”{print$$1} 2. 22 a 23 $echo-e“2 2 3 4 \n2 22 3 4 5 6 \na 2 3”| awk'{print$$2}” 2. 2. $echo-e“2 2 3 4 \n2 22 3 4 5 6 \na 2 3”| awk'{print$$3}” 3. 3.

这是我第一次看到这种用法。不幸的是,我找不到相关信息

awk '{print $$1}'
$$1
是干什么的?它是一个数组吗

$echo-e“2 2 3 4 \n2 22 3 4 5 6 \na 2 3”{print$$1}
2.
22
a 23
$echo-e“2 2 3 4 \n2 22 3 4 5 6 \na 2 3”| awk'{print$$2}”
2.
2.
$echo-e“2 2 3 4 \n2 22 3 4 5 6 \na 2 3”| awk'{print$$3}”
3.
3.
3.
以上只是例子。请注意,这不是单个的
$
,而是
$

间接字段寻址

将其视为这样的
$($1)

因此,对于第二行
22233456
这个命令
awk'{print$$1}'
将查看
$1
(第一个字段)。它确实包含值2,那么结果将是
$2
(第二个字段),因此
$$1
的结果将是
22
$$1
将从字段1(
$1
)中获取数字,并将其用作外部
$
的字段号

例如:

$ echo -e "1 b c d\n2 b c d\n3 b c d\n4 b c d" 
1 b c d
2 b c d
3 b c d
4 b c d
然后:

编辑
正如@kvantour所指出的,您可以随意添加$may

awk '{print $$$1}' = awk '{print $$($1)}' = awk '{print $($($1))}'
正如@Ed所指出的,您可以通过如下方式展开它,使其更具可读性:

awk '{print $$1}' = awk '{fieldNr=$1; print $fieldNr}'

请注意,您可以继续这样做:
awk'{print$($1)}'
也可以这样做,等等……对了,如果像您指出的那样写为
awk'{print$($1)}'
,或者更好地使用一个变量来保存中间值
awk'{fieldNr=$1;print$fieldNr}'
awk '{print $$1}' = awk '{fieldNr=$1; print $fieldNr}'