一、awk(上)
#awk -F ':' '{print $1}' test.txt //指定分隔符,分隔符为冒号,把第1段打印出来
#awk -F ':' '{print $0}' test.txt // 打印所有的段,使用$0表示所有的段
或者使用 # awk '{print $0}' test.txt 来打印所有段
awk如果没有使用-F来指定分隔符,那么它会默认使用空格或空白字符来作为分隔符去打印
#awk -F ':' '{print $1,$3,$4}' test.txt //指定打印第1段、第3段、第4段
#awk -F ':' '{print $1"#"$3"#"$4}' test.txt //可以把逗号换成"#"使它看起来比较美观
#awk '/oo/' test.txt //awk匹配功能,打印出包含'/oo/'的行
#awk -F ':' '$1 ~ /oo/' test.txt //打印第1段包含/oo/的行
[root@linux-01 awk]# awk -F ':' '$1 ~ /oo/' test.txt
root:x:0:0:root:/root:/bin/bash
#awk -F ':' '$1 ~ /o+/' test.txt //awk同样支持正则表达式
#awk -F ':' '/root/ {print $1,$3} /user/ {print $1,$3,$4}' test.txt //root打印第1,3段,user打印第1,3,4段
#grep -E 'root|user' test.txt //打印出root或user
#awk -F ':' '$3==0 {print $1}' test.txt //打印第3段等于0的第1段字符
#awk -F ':' '$3>=1000 {print $0}' test.txt //打印第3段大于等于1000的所有段的字符
#awk -F ':' '$3>="1000" {print $0}' test.txt //1000加上双引号会被识别成一个字符串,不是数字,注意:如果筛选的是第3段大于等于1000的,就不要加双引号
#awk -F ':' '$7!="/sbin/nologin" {print $0}' test.txt //打印出第7段不等于"/sbin/nologin"的所有段,!=表示不等于,如果筛选的是字符串,需要加双引号,如:"/sbin/nologin"
二、awk(下)
#awk -F ':' '$3<$4' test.txt //打印出第3段小于第4段的所有段
#awk -F ':' '$3==$4' test.txt //打印出第3段和第4段相等的所有段
#awk -F ':' '$3>"5" && $3<"7"' test.txt //打印第3段大于5小于7的所有段
#awk -F ':' '$3>1000 || $7=="/sbin/nologin"' test.txt //打印第3段大于1000或者第7段等于/sbin/nologin/的所有段
#awk -F ':' '$3>1000 || $7 ~ /bash/' test.txt //打印第3段大于1000或者第7段包含/bash/的所有段
#awk -F ':' '{OFS="#"} $3>1000 || $7 ~ /bash/ {print $1,$3,$7}' test.txt //打印-F指定分段前的分隔符,{OFS="#"} 用来指定print的时候用到分隔符,OFS属于内置变量
#awk -F ':' '{OFS="#"} {if ($3>1000) {print $1,$2,$3,$4}}' test.txt //如果第3段大于1000,则打印出出第1,2,3,4段,加上了if判断语句
内置变量:NR表示行,显示行号;NF表示段,显示段数
#awk -F ':' '{print NR":"$0}' test.txt //打印出所有的行及显示行号
#awk -F ':' '{print NF":"$0}' test.txt //打印出所有行的段及显示段数
#awk -F ':' 'NR<=10' test.txt //打印小于等于前10行的,使用NR判断打印的行数是前10行
#awk -F ':' 'NR<=10 && $1 ~ /root|sync/' test.txt //打印出前10行并且第1段包含了root或者sync的字符
#awk -F ':' 'NF==7 && $1 ~ /root|sync/' test.txt //打印出第7段并且第1段包含root或sync的
#awk -F ':' '{print $NR":"$NF}' test.txt //$NR和$NF
#head -n 3 test.txt |awk -F ':' '$1="root"' //$1="root"是赋值,$1=="root"是匹配
#head -n 3 test.txt |awk -F ':' '{OFS=":"} $1="root"' //分隔符没了再添加一个{OFS=":"}
#awk -F ':' '{(tot=tot+$3)}; END {print tot}' test.txt //tot=tot+$3指tot+第3段的和,tot是一个循环