awk命令
1.用法
awk -F 分隔符 BEGIN{}{}END{} FILENAME
- FILENAME #文件名称本身
- -F 指定分隔符号
awk的使用
1.行数,列数
命令 | 作用 |
---|---|
NR | 行数 |
NF | 列数 |
练习:
2.条件
用法 作用
/条件1|条件2/ #条件1或者条件2
/条件1/||/条件2/ #条件1或者条件2
/条件1/&&/条件2/ #条件1并且条件2
$0 #所有的列
$1 #第一列
$2 #第二列
$3 #第三列
练习:
- 或者与并且
- 列
[root@xixi ~]# awk -F : '/^root/&&/bash$/{print $1,$7}' /etc/passwd 第一列和第7列
root /bin/bash
[root@xixi ~]# awk -F : '/^root/&&/bash$/{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@xixi ~]# awk -F : '/^root/&&/bash$/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash 所有列
[root@xixi ~]#
怎么看第几列的信息不是谁
#/etc/passwd文件的第六列没有home关键字并且以bash结尾的行
awk -F : '$6!~/home/&&/bash$/{print}' /etc/passwd
直接显示bash结尾的
3.变量值与字符串
[root@xixi mnt]# awk BEGIN'{print NAME}' westos 不加引号表示变量值
[root@xixi mnt]# man awk
[root@xixi mnt]# awk BEGIN'{print "NAME"}' westos 加引号表示字符串
NAME
[root@xixi mnt]#
课后练习:
统计在系统中能su切换的并且用户家目录不在/home下的用户数量
[root@xixi ~]# awk -F : '$6!~/home/&&/bash$|csh$|sh$|tcsh$/{print NR}' /etc/passwd
1