一、一些特殊字符的含义
1.数学运算符
= 为赋值
== 为等于
!= 为不等于
>= 为大于等于
<= 为小于等于
&& 并且
|| 或者
~ 匹配
2.其他字符
OFS 用于定义输出打印的分隔符
NR 表示行号
NF 表示段号
tot 求和
$0 所有段
"1000" 字符,所有数字加双引号为字符
二、和sed的差异
支持分段,可以针对每段进行匹配
三、命令实例
awk -F ':' 'print $1' test.txt 以:分段,打印第一段
awk -F ':' 'print $1,$2,$3' test.txt 以:分段,打印第一、二、三段
awk -F ':' 'print $1"#"$2"#"$3' test.txt 以:分段,用#做分隔符打印第一、二、三段
awk -F ':' '{OFS="#"}' $3>1000 || $7 ~ /bash/' test.txt 以:分段,用#做分隔符打印第三段大于1000,或者第七段值为bash的行
awk ‘/oo+/’ 打印含有oo的行
awk -F ':' '$1 ~ /oo/' test.txt 以:分段,打印第一段含有oo的行
awk -F ':' '/root|/ {print $1,$3} /user/ {print $1,$4}' test.txt 以:分段,含有root的打印第一段和第三段,含有user的打印第一段和第四段
awk -F ':' '/root|user/' {print $0} test.txt 以:分段,含有root或者user的打印整行
awk -F ':' '$3==0' {print $1} test.txt 以:分段,如果第三段等于零,打印第一段
awk -F ':' '$3=="1000" {print $0}' test.txt 以:分段,如果第三段等于字符1000 就打印整行
awk -F ':' '$3==1000 {print $0}' 以:分段,如果第三段等于1000就答应整行
awk -F ':' '$7!="/sbin/nologin" {print $0}' test.txt 以:分段,如果第七段不等于/sbin/nologin 就打印整行
awk -F ':' '$3<$4' test.txt 以:分段,如果第三段小于第四段就打印
awk -F ':' '$3<"5"&&$5<"7"' test.txt 以:分段,如果第三段小于字符5,并且第七段小于字符7就打印整行
awk -F ':' '$3>1000||$7 ~ /bash/' test.txt 以:分段,如果第三段大于1000或者第七段为bash就打印整行
awk -F ':' '{print NR ":" $0}' test.txt 以:分段,打印所有行和行号
awk -F ':' '{print NF ":" $0}' test.txt 以:分段,打印所有行和总段数
awk -F ':' 'NR<=10' test.txt 打印前十行
awk -F ':' 'NR<=10'&&$1 ~/root|sync/' test.txt 以:分段,打印前十行中含有root或者sync的行
awk -F ':' 'NF=6&&$1 ~/root|sync/' test.txt 以:分段,打印第六段有root或者sync的行
awk -F ':' '{print $NR ":" $NF}' test.txt 以:分段,打印每行的第七段
head -n 3 /etc/passwd | awk -F ':' '$1="root"' 将前三行的第一段替换为root并打印
awk -F ':' '{(tot=tot+$3)}; END {print tot}' test.txt 计算整个文件第三段的和
打印第一遍的时候tot为0加上第一行第三段的数值,第二遍的时候是第一行第三段的数值和第二段第三行的数值在相加以此类推,直至结束。