在Awk中,$\和$0是同义词吗?

在Awk中,$\和$0是同义词吗?,awk,Awk,我在Gnu Awk手册或Wikipedia页面中找不到对$\uuuu的引用,但出于Perl习惯,我错误地使用了它,它似乎与$0完全相同 ping www.bbc.co.uk | awk '{print NR,$_}' ping www.bbc.co.uk | awk '{print NR,$0}' 是不是有人不厌其烦地删除了一些非常过时的行为?在OP的代码中: ping www.bbc.co.uk | awk '{print NR,$_}' 解释:以上awk编码将视为一个变量,因为变量没有定

我在Gnu Awk手册或Wikipedia页面中找不到对
$\uuuu
的引用,但出于Perl习惯,我错误地使用了它,它似乎与
$0
完全相同

ping www.bbc.co.uk | awk '{print NR,$_}'
ping www.bbc.co.uk | awk '{print NR,$0}'
是不是有人不厌其烦地删除了一些非常过时的行为?

在OP的代码中:

ping www.bbc.co.uk | awk '{print NR,$_}'
解释:以上
awk
编码将
视为一个变量,因为变量
没有定义值,所以它的值为零(
0
),这就是为什么它从
NR,$\u
变为
NR,$0
,从而打印当前行。因此,与perl等不同,
$没有特殊意义


因此,即使有人尝试这样做:
ping www.bbc.co.uk | awk'{print NR,$E}'
也会打印相同的内容。

使用
$any_undefined_variable
而不是
$\u,你也会得到相同的行为。下划线是一个有效的变量名,由于变量未定义,它在数字上下文中的值默认为零,即它确实等同于
$0
,但这不是因为
$
是一个特例(它不是特例)。

您可以定义
的值,例如
echo foo bar | gawk-v=2'{print$}“
打印
。因此,我不建议养成假定
\uu
等于零的习惯。