这是我第一次看到这种用法。不幸的是,我找不到相关信息。
awk '{print $$1}'
Run Code Online (Sandbox Code Playgroud)
是什么$$1呢?是数组吗?
awk '{print $$1}'
Run Code Online (Sandbox Code Playgroud)
以上仅是示例。请注意,这不是一个单一的$,而是一个$$
间接字段寻址
这样看$($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)
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |