以下awk脚本示例的含义是什么?

时间:2013-04-18 20:55:17

标签: regex awk gawk

我有这个例子

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]%/

3 个答案:

答案 0 :(得分:1)

这是一个正则表达式,匹配单词开头\<后跟8|9[8|9]应该是{{1} })后跟一个数字([89]),后跟[0-9]

答案 1 :(得分:1)

BEGIN块在读取任何输入文件之前执行一次,只打印文字字符串*** WARNING WARNING WARNING ***。类似地,END块也只在读取所有输入文件后执行一次,并且只打印升字符串*** Give money for new disks URGENTLY! ***。对于前一个条件评估为true的每一行执行所有其他块。

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%中regexp将匹配的任何位置,则将打印以下内容:字符串Partition后跟当前行的第六个字段,后跟TAB,后跟:,然后是当前行的第五个字段,最后是字符串fullawk中的默认字段分隔符是空格。

答案 2 :(得分:-1)

如果匹配&lt; 80%至&lt; 99%,则显示消息Partition ### Full