此功能是什么意思?功能$$ 1

Ysi*_*ing 2 awk

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

awk '{print $$1}'
Run Code Online (Sandbox Code Playgroud)

是什么$$1呢?是数组吗?

awk '{print $$1}'
Run Code Online (Sandbox Code Playgroud)

以上仅是示例。请注意,这不是一个单一的$,而是一个$$

Jot*_*tne 5

间接字段寻址

这样看$($1)

因此,对于第二行,2 22 3 4 5 6此命令awk '{print $$1}'将查看$1(第一个字段)。它确实包含值2,那么结果将为$2(第二个字段),因此结果$$1将为22$$1将从字段#1($1)中获取数字,并将其用作external的字段数字$

例:

$ 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
Run Code Online (Sandbox Code Playgroud)

然后:

$ echo -e "1 b c d\n2 b c d\n3 b c d\n4 b c d" | awk '{print $$1}'
1  # since filed #1=1 result print first field
b  # since filed #1=2 result print secondfield
c  # since filed #1=3 result print third field
d  # since filed #1=4 result print fourth field
Run Code Online (Sandbox Code Playgroud)

编辑
作为@kvantour指出,你可以添加你喜欢可以$

awk '{print $$$1}' = awk '{print $$($1)}' = awk '{print $($($1))}'
Run Code Online (Sandbox Code Playgroud)

正如@Ed指出的那样,您可以通过如下扩展使其更具可读性:

awk '{print $$1}' = awk '{fieldNr=$1; print $fieldNr}'
Run Code Online (Sandbox Code Playgroud)