Linux awk脚本中的$0和$1(美元符号0或1)是什么?
: 为什么Linux awk脚本中的$0和$1(美元符号0或1)是什么?,linux,awk,Linux,Awk,: 为什么1和3比较$1和2使用$0?实际上,由于这种语法,示例#2使用正则表达式 /regex/ 这意味着在您的示例中,如果整行($0)中没有找到文本Mary),则执行awk代码 而$1==“Mary”正在对文本Mary和字段1($1)进行直接比较 最后,tolower($1)~/mary/再次在字段#1上使用ignre case regex match,这意味着如果$1有文本mary(忽略大小写),则执行awk代码的其余部分。在awk中,$0是整行参数,而$1只是由空格分隔的参数列表中的第
1
和3
比较$1
和2
使用$0
?实际上,由于这种语法,示例#2
使用正则表达式
/regex/
这意味着在您的示例中,如果整行($0
)中没有找到文本Mary
),则执行awk代码
而$1==“Mary”
正在对文本Mary
和字段1($1
)进行直接比较
最后,
tolower($1)~/mary/
再次在字段#1上使用ignre case regex match,这意味着如果$1
有文本mary
(忽略大小写),则执行awk代码的其余部分。在awk中,$0
是整行参数,而$1
只是由空格分隔的参数列表中的第一个参数。所以如果我把“玛丽有一只小羊羔”放在awk中,$1
是“玛丽”,但是$0
是“玛丽有一只小羊羔”。第二行试图在给awk的整行中找到子字符串“Mary”。来自链接中的描述(我的重点):
表达式通常是其中一个字段或
对其中一个字段的操作。例如,下面的AWK
筛选规则分别显示如何将第一个字段与进行比较
“mary”不区分大小写,如何匹配所有记录
不包含“Mary”,以及如何首先对进行精确比较
field反对“Mary”:
因此,将其分解:
第一个:
how to compare the first field to “mary” in a case-insensitive fashion
因为它比较第一个字段,所以使用$1
如何匹配所有不包含“Mary”的记录
由于它比较所有记录,因此使用$0
第三个
以及如何将第一个字段与“Mary”进行精确比较:
比较第一个字段,所以它使用的是<代码> $1 < /C>。
你不应该考虑使用AWK,直到你可以很容易地回答这些问题,因为它们是绝对基本的。这就像给我们看一道数学题,然后问“+”是什么意思。获取阿诺德·罗宾斯的《有效的Awk编程》第三版。同意@EdMorton。顺便说一句,我正在投票重新讨论这个问题:它的标题引发了大量的访问,一个恰当的答案加上一个好的解释可以让这个话题更加清晰。 how to compare the first field to “mary” in a case-insensitive fashion