awk 命令

截取文档中的某段

#awk -F ':' {print$1} 1.txt    打印第一段

#awk  -F ':' 'OFS=‘#’ {print$1,$2,$3,$4} 1.txt 指定显示结果的分隔符为#  , 也可以使用自定义字符连接每个段 {print$1"#"$2}

匹配字符或字符串

#awk '/root/' 1.txt

针对某个段匹配

#awk -F ’:' $1 ~/oo/' 1.txt

多次匹配

#awk -F ':' /root/ {print $1,$3};$1~/test/;$3~/20/' 1.txt

改变某个段的值

#awk -F ':' '$1="root'" 1.txt 

数字计算,把第三段和第四段值相加,并赋予第七段

#awk -F'{OFS=":"}  {$7=$3+$4;print$0}' 1.txt

计算第三段的总和

#awk -F ':' '{(tot=tot+$3)};END{print tot}' 1.txt

if关键词

#awk -F ':' '{if($1=="root")print$0}' 1.txt

内置变量NF段数,NR 行数’

打印20行以后的行

#awk 'NR>20' 1.txt

打印20行以后并且第一段包含‘ssh’的行

#awk -F ':' 'NR>20 && $1~ /ssh/' 1.txt


条件操作符<,>,==,!=,>=,<=

第三段为0

#awk -F ':' ’$3=="0"' 1.txt


第三段大于等于500

#awk -F ':' ’$3>=500' 1.txt

说明,等比较数字时,不能加双引号,如果写成$3>="500" 就不符合要求了

第7段不是‘/sbin/nologin'

#awk -F ':' '$7!="/sbin/nologin"' 1.txt

第三段小于第四段

#awk -F ':' '$3<$4' 1.txt

第三段大于5,并且小于7

#awk -F ':' '$3>5 && $3<7' 1.txt

第三段大于5,或者第7段为 '/bin/bash'

#awk -F ':' '$3>"5" || $7=="/bin/bash"' 1.txt


 扩展
awk 中使用外部shell变量 http://www.aminglinux.com/bbs/thread-199-1-1.html
awk 合并一个文件 http://www.aminglinux.com/bbs/thread-493-1-1.html
把一个文件多行连接成一行 http://www.aminglinux.com/bbs/thread-266-1-1.html
awk中gsub函数的使用 http://www.aminglinux.com/bbs/thread-200-1-1.html
awk 截取指定多个域为一行 http://www.aminglinux.com/bbs/thread-224-1-1.html
过滤两个或多个关键词 http://www.aminglinux.com/bbs/thread-198-1-1.html
用awk生成以下结构文件 http://www.aminglinux.com/bbs/thread-5494-1-1.html
awk教程 http://www.cnblogs.com/emanlee/p/3327576.html 

awk用print打印单引号 http://www.aminglinux.com/bbs/thread-1738-1-1.html

合并两个文件 http://www.aminglinux.com/bbs/thread-945-1-1.html