awk基础查询命令

AWK命令

awk中的内置变量

FS (field separator)  字段分隔符
NS (number records)表示行号信息
NF(number of fileds) 每一行有多少列
#实验环境
cat >>/root/info.txt<<EOF
Zhang	andy		41117397	:250:100:175
zhao	bob			390320151	:155:90:201
liu		cili		80042789	:250:60:50
wang	haha		70271111	:250:80:75
Liu		kiki		41117483	:250:100:175
wu		dudu		3515064655	:50:95:135
du		lili		1986787350	:250:168:200
liu		jingjing	 918391635	:175:75:300
Li		gougou		918391635	:250:100:175
EOF

查询案例

-F 指定分隔符
NR==  行号信息
# 查看文件的指定行
[root@localhost ~]# awk 'NR==1' info.txt 
Zhang	andy		41117397	:250:100:175

#查看含有bob的这一行
[root@localhost ~]# awk '/bob/' info.txt 
zhao	bob		390320151	:155:90:201


#按列查找 第一行的第一列和第二例
[root@localhost ~]# awk 'NR==1{print $1 $2}' info.txt 
Zhangandy

# 查找第三列包含0 的
[root@localhost ~]# awk '$3~/0+/' info.txt
zhao	bob		390320151	:155:90:201
liu	    cili	80042789	:250:60:50
wang	haha	70271111	:250:80:75
wu	    dudu	3515064655	:50:95:135
du	    lili	1986787350	:250:168:200
# ~ 包含或者匹配后面的信息
# !~ 不包含或不匹配后面的信息

查询进阶案例

# 查询cili的姓氏和ID
[root@localhost ~]# awk '$2~/cili/{print $1,$3}' info.txt
liu 80042789

# 查看姓氏为wu ,的 姓名 和 第二个数字
[root@localhost ~]# awk -F "[ :]+" '$1~/wu/{print $1,$2,$5}' info.txt
wu dudu 95

#显示lili的数字, 并以$开头
[root@localhost ~]# awk '$2~/lili/{gsub(/:/,"$",$NF);print $0}' info.txt
du lili 1986787350 $250$168$200


参考oldboy案例

posted on 2022-02-15 23:59  joe_HelloWorld  阅读(641)  评论(0编辑  收藏  举报

导航