linuxjishu/13830.html target=_blank class=infotextkey>awk 允许使用规则表达式,根据规则表达式是否匹配当前行来选择执行独立代码块。
输出包含字符序列foo的行:
/foo/ { print }
复杂点的,只打印包含浮点数的行:
/[0-9]+.[0-9]*/ { print }
可以将任意一种布尔表达式放在一个代码块之前,以控制何时执行某特定块。仅当对前面的布尔表达式求值为真时,awk 才执行代码块。以下示例脚本输出将输出其第一个字段等于 fred 的所有行中的第三个字段。如果当前行的第一个字段不等于 fred,awk 将继续处理文件而不对当前行执行 print 语句:
$1 == "fred" { print $3 }
awk 提供了完整的比较运算符集合,包括 "=="、"<"、">"、"<="、">=" 和 "!="。另外,awk 还提供了 "~" 和 "!~" 运算符,它们分别表示“匹配”和“不匹配”。
它们的用法是在运算符左边指定变量,在右边指定规则表达式。如果某一行的第五个字段包含字符序列 root,以下示例只打印这一行中的第三个字段:
$5 ~ /root/ { print $3 }