我有一个由别人写的剧本,其中有一些我不理解的内容 我在这个脚本中有一个函数:
_service_description_prefix(){
echo "select xxxxxxxxx" | _mysql_execute | awk -F";" '
function _print(AAAA, BBBB){
if ( AAAA == "" ) { next };
DESCR=AAAA";"ALERT ;
exit
}
/.*/ { DESCR="" ; AAAA="" ;
if ( $2 ~ "^L24/7" ) { ALERT="yes" } else { ALERT="no" };
}
( $3 == "ZZ" ){
xxxxxx
}
----- There are a lot more here -----
( $3 == "YY" ){
xxxxxx
}
/.*/ { AAAA="ee" ; ALERT="no" ;
}
'
}
我不明白的是/.*/
的意思
所有($ 3 == xx)似乎表现得像if条件,但我没有“if”!
这是一些我不知道的语法吗?
谢谢你的帮助!
阿芒
答案 0 :(得分:2)
/.*/
和$3 == "YY"
都是基本的awk语法。您可以在awk man page中找到详细说明,但这里有一个快速摘要。
awk
程序由一般形式的多个语句组成:
pattern { action }
模式几乎可以是任何表达;如果评估为true
,则awk
将执行操作。模式/.*/
是regular expression,匹配"任何字符,任意次数"。所以:
/.*/ { action }
将匹配包含零个或多个字符的任何行。换句话说,它将始终执行 action 。实际上,它相当于:
{action}
表达式$3 == "YY"
是一个简单的布尔表达式,用于检查字段编号3是否等于" YY"。默认情况下,awk
在空格上拆分输入,因此给出以下输入:
AA MM YY ZZ
AA MM XX ZZ
第一行匹配$3 == "YY"
,第二行不匹配。