我有这个例子
BEGIN { print "*** WARNING WARNING WARNING ***" }
/\<[8|9][0-9]%/ { print "Partition " $6 "\t: " $5 " full!" }
END { print "*** Give money for new disks URGENTLY! ***" }
大部分我都懂,除了以下
/\<[8|9][0-9]%/
这是一个正则表达式,将匹配 word-start\<
后跟8
,|
或9
([8|9]
应该是[89]
) 后跟数字 ( [0-9]
) 后跟%
。
该BEGIN
块在读取任何输入文件之前执行一次,只打印文字字符串*** WARNING WARNING WARNING ***
。同样,该END
块也仅在读取所有输入文件后才执行一次,并且仅打印升字符串*** Give money for new disks URGENTLY! ***
。所有其他块都针对前一个条件评估为真的每一行执行。
BEGIN {
print "*** WARNING WARNING WARNING ***"
}
/\<[8|9][0-9]%/{
print "Partition",$6,"\t:",$5,"full!"
}
END {
print "*** Give money for new disks URGENTLY! ***"
}
条件/\<[8|9][0-9]%/
是正则表达式匹配整行,其中正则表达式的含义如下:
\< # Word Start
[8|9] # Either an 8 or | or 9 (think this should be [89])
[0-9] # A digit
% # literal percent character
基本上,如果该行包含正则80% - 99%
表达式将匹配的范围内的任何位置,并且将打印以下内容:字符串Partition
后跟当前行的第六个字段,然后是 TAB,然后是:
,然后是当前行的第五个字段,最后是字符串full
。默认的字段分隔符awk
是空格。
如果它匹配 <80% 到 <99%,则显示消息 Partition### Full