awk /[^liuyifei]/ file.txt ###########会剔除掉yi liu的这些行-----------------------------------后续待解答 测试如下:
[root@yami test]# cat >>/yang<<eof
> liuyifei
> liushaoqi
> maozedong
> caishaofen
> renzhengfei
> yi
> liu
> fei
> eof
[root@yami test]# cd /
[root@yami /]# cat yang
liuyifei
liushaoqi
maozedong
caishaofen
renzhengfei
yi
liu
fei
[root@yami /]# awk /[^liuyifei]/ yang
liushaoqi
maozedong
caishaofen
renzhengfei
[root@yami /]# awk /[^liuyifei]/ yang|wc -l
4
[root@yami /]# wc -l yang
8 yang
[root@yami /]#
结果:liuyifei liu yi fei都被剔除,过滤还是grep好
awk '{if(NR>19 && NR<31) printf $1 "\n"}' file.txt
打印没有空格的文本第19到31行
chkconfig --list |grep 3:on |awk '{print $1}'##################取出服务在3级别为on的选项,awk默认以空格为分隔符 chkconfig中的项皆为deamon,可在/etc/init.d中查看到
ls -l |awk '/^d/' ###########过滤出所有目录,默认打印$0 ls -l |grep ^d 过滤目录
ls -l |awk '/^d/{print $0}' ########作用同上
awk -F '[ ,]' '{print $1,$NF}' x.txt #############多分隔符用awk,以空格和,作为分隔符 打印第一个域和最后一个域
awk '{print NR}' /etc/services|tail -1 #############查询services有多少行,NR显示行号
cat -n /etc/services |tail -n 1
cat -n /etc/services |awk '{print $1}'|tail -1
nl /etc/service|cut -d " " -f 1|tail -1
awk -F ":" '{print $1,$3}' /etc/passwd ###########显示用户名和UID
ifconfig eth0|grep 'inet addr'|awk -F '[ :]+' '{print $4}'#####awk中的+号,把重复出现的分隔符,当作一个分隔符处理
[root@yami /]# cat >yang<<eof
> ############i********
> ########am00000000000
> ######of#########
> eof
[root@yami /]# cat yang
############i********
########am00000000000
######of#########
[root@yami /]# awk -F '[#*0]' 'print $2'
awk: print $2
awk: ^ syntax error
[root@yami /]# awk -F '[#*0]' '{print $2}'
^C
[root@yami /]# awk -F '[#*0]' '{print $2}' yang
[root@yami /]# awk -F '[#*0]+' '{print $2}' yang
i
am
of
[root@yami /]#
ifconfig eth0 | awk '{NR==2}' ##############awk NR==2过滤行
ifconfig eth0|awk -F '[ :]+' 'NR==2{print $4}'
awk 中NF为当前行记录域或列的个数 有一个$NF表示最后一行