awk:报告生成器 格式化以后,美观的显示出来
which awk
ls –l /bin/awk
linux 上面默认使用 gawk
awk 处理机制
vim /mnt/awk-file
—>>This is awk test!
wak-file要是两行或者多行呢?实验一下.结果显示1会打印出文件的第一列,依次类推,[0]打印出全部内容,man awk
awk '{print FILENAME}' filename ##filename有几行将打印出几个filename文件名
filename
filename
awk {print NR,NF} filename
awk {print NR,NF} file 第一行3列;第二行1列
awk 'BEGIN{print "NAME"}' 输入开始打印内容NAME
awk ‘BEGIN{print “Username”}{print NR,NF,FILENAME}’ file
awk 'END{print "NAME"}' 输出开始打印内容NAME
awk ‘END{print “Username”}{print NR,NF,FILENAME}’ file
查找系统中可交互式登陆系统的所有用户并以表头Username,Uid打印出来,末尾说明All can login system by x11
第一步:交互登陆用户使用的是bin/bash
awk '/\<bin\/bash\>/{print}' /etc/passwd 查找含bin/bash的行\<bin\/bash\>精确查找
第二步:过滤用户名和UID
awk -F : '/\<bin\/bash\>/{print $1,$3}' /etc/passwd
第三步:打印开头信息
打印末尾信息
awk过滤,方法大致同grep
查找passwd中以root开头的行
awk '/^root/' passwd 查找passwd中以root开头的行
awk '/root$/' passwd 查找passwd中以root结尾的行
查找系统用户所用目录不是home下的可交互式登陆用户
awk -F : '/\<bin\/bash\>/&&!/\<home\>/{print $1,$6}' /etc/passwd
打印/etc/passwd 中行首不是a-d的行
awk '/^[^a-d]/' {print} /etc/passwd 其实不加{print}的时候相当于过滤,结果都一样
~包含
awk -F : '$n~/root/{print}' passwd passwd中第n列含root单词的行
awk -F : '$n!~/root/{print}' passwd passwd中第n列不含root单词的行
awk -F : '$n~/root/{print $m}' passwd passwd中第n列含root单词的行打印第m列
实验:打印team0的ip
ifconfig team0 | awk '/inet\>/{print $6}'