awk脚本中的$ 0和$ 1(美元符号0或1)是多少?

0x9*_*x90 18 linux awk

awk:

 1  tolower($1) ~ /mary/ { print "CI Record: " $0; }
 2  $0 !~ /Mary/ { print "Not Mary: " $0; }
 3  $1 == "Mary" { print "Mary Record: " $0; }
Run Code Online (Sandbox Code Playgroud)

为什么13比较$1,并2使用$0

小智 26

在awk中,$0是整个参数行,而$1只是由空格分隔的参数列表中的第一个参数.因此,如果我通过awk放"玛丽有一只小羊羔",$1是"玛丽",而是$0"玛丽有一只小羊羔".第二行是尝试在给予awk的整行中找到子串"Mary".


anu*_*ava 10

实际上,# 2由于这种语法,示例正在使用正则表达式

/regex/
Run Code Online (Sandbox Code Playgroud)

这意味着在您的示例中,如果Mary在整行($0)中找不到文字文本,则执行awk代码.

$1 == "Mary"在文字文本Mary和字段#1($1)之间进行直接比较.

最后tolower($1) ~ /mary/再次在字段#1上使用ignre-case正则表达式匹配,这意味着如果$1有文本mary(ignore-case)则执行其余的awk代码.