shell编程的awk指令的简单用法

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
发布了64 篇原创文章 · 获赞 4 · 访问量 3413

猜你喜欢

转载自blog.csdn.net/ly_qiu/article/details/105475826