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) 编辑 收藏 举报