条件操作符
匹配
awk -F : '{if($1~/root/) print}' /etc/passwd
分析:if($1~/roo/t) 表示如果 file 中包含 root,打印他
精确匹配
使用符号==
awk -F: '{if($3==0) print}' /etc/passwd
不匹配
!~
awk -F: '{if($1!~/linuxone/) print}' /etc/passwd
精确不匹配
!=
awk -F: '{if($1!=/linuxone/) print}' /etc/passwd
小于
<
小于等于
<=
大于
设置大小写
awk ‘/[Rr]oot’ /etc/passwd
任意字符
awk -F : '{f($1~/^...t/) print}' /etc/passwd
分析:if($1~/^...t/)表示第四个字母是 t
或关系匹配
awk -F : '{if($1~/(squid|nagios)/) print}' /etc/passwd
行首
awk '/^root/' /etc/passwd
分析:^root(行首包含 root)
AND &&
awk -F : '{if($1=="root"&&$3=="0") print}' /etc/passwd
OR ||
内置变量:
变量名 | 含义 |
ARCC | 命令行参数个数 |
ARGV | 命令行参数列表 |
ENV |RON | 支持队列中的系统环境变量的使用 |
FNR | 浏览文件的记录数 |
FS | 置顶分隔符,等价于-F |
NF | 浏览记录的域的个数 |
NR | 一度的记录数 |
OFS | 输出域分隔符 |
ORS | 输出记录分隔符 |
RS | 控制记录分隔符 |
案例:
打印有多少行记录
awk 'END{print NR}' /etc/passwd
设置输入域到变量名
awk -F : '{name=$1;path=$7; if(name~/root/)print name"\tpath is : " path}' /etc/passwd
域值比较操作
awk '{if($6<$7) print $0}' input-file
修改文本域只显示修改的记录
awk -F : '{if($1=="root"){$1="nagios server" ; print}}' /etc/passwd
文件长度相加
ls -l | awk '/^[^d]/ {print $9"\t" $5}{tot =$5}\
END {print "total kb:"tot}'
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved