一、awk 的功用
以字段为单位进行处理(其实就是把一行的数据分割,然后进行处理)
二、awk常用命令
注:其中的passwd是当前目录下的一个文件名
有任何疑惑请看“三、awk常用命令演示”
awk '{print FILENAME}' passwd >> 逐行打印文件名称
awk -F : '{print NF}' passwd >> 以:为分隔符,列出列数
awk '{print NR}' passwd >> 列出行数
awk 'BEGIN{a=5;print a+12}' >> 加法运算
awk '/^ro/{print}' passwd >> 打印以ro开头的行
awk '/^a|bash$/{print}' passwd >> 打印以a开头或以bash结尾的行
awk '!/^a|bash$/' passwd >> 打印不以a开头以及以bash结尾的行
awk -F : '/^[a-d]/{print $1,$6}' passwd >> 以:为分隔符,打印以a-d开头的行中的第1,6列
awk -F : '!/^[a-d]/{print $1,$6}' passwd >> 以:为分隔符,打印不以a-d开头的行中的第1,6列
awk -F : '$6~/bin$/{print $1,$6}' passwd >> 打印以:为分隔符,第六列以bin结尾的行中的第1,6列
awk -F : '$7!~/nologin$/{print $1,$7}' passwd >> 不打印以:为分隔符.第七列以nologin结尾的行的第1,7列
三、awk常用命令演示
演示环境:
在/mnt下的一个文件passwd
命令演示
[root@allen mnt]# awk '{print FILENAME}' passwd
[root@allen mnt]# awk -F : '{print NF}' passwd
[root@allen mnt]# awk '{print NR}' passwd
[root@allen mnt]# awk 'BEGIN{a=5;print a+12}'
[root@allen mnt]# awk '/^ro/{print}' passwd
[root@allen mnt]# awk '/^a|bash$/{print}' passwd
[root@allen mnt]# awk '!/^a|bash$/' passwd
[root@allen mnt]# awk -F : '/^[a-d]/{print $1,$6}' passwd
[root@allen mnt]# awk -F : '!/^[a-d]/{print $1,$6}' passwd
[root@allen mnt]# awk -F : '$6~/bin$/{print $1,$6}' passwd
[root@allen mnt]# awk -F : '$7!~/nologin$/{print $1,$7}' passwd