awk命令使用

环境:centos7

1、awk直接筛选列

[sanhlt@k8s-master ~]$ free -g
              total        used        free      shared  buff/cache   available
Mem:              3           1           1           0           0           1
Swap:             0           0           0
[sanhlt@k8s-master ~]$ free -g|awk '{print $2}'
used
3
0

2、awk筛选字段并输出列值(查询文本 /proc/meminfo中MemTotal的第二列)

[sanhlt@k8s-master ~]$ cat /proc/meminfo|grep MemTotal
MemTotal:        3882032 kB
[sanhlt@k8s-master ~]$ awk '/MemTotal/{print $2}' /proc/meminfo
3882032

3、可以对筛选的值做赋值运算(将结果赋值给total)注意:END必须大小

[sanhlt@k8s-master ~]$ awk '/MemTotal/{total=$2}END{print total}' /proc/meminfo
3882032

4、可以进行精确匹配进行筛选(awk取以Cache开头的字段 ,使用符号^开头

[sanhlt@k8s-master ~]$ cat /proc/meminfo |grep Cached
Cached:           415684 kB
SwapCached:            0 kB
[sanhlt@k8s-master ~]$ cat /proc/meminfo |grep Cached|awk '/^Cached/{print $2}'
415848

5、可以将结果进行计算输出(计算服务器剩余内存,计算应用可以使用的内存)

[sanhlt@k8s-master ~]$ awk '/MemTotal/{total=$2}/MemFree/{free=$2}END{print (total-free)/1024}' /proc/meminfo
2075.58
[sanhlt@k8s-master ~]$ awk '/MemTotal/{total=$2}/MemFree/{free=$2}/^Cached/{cache=$2}/Buffers/{buffer=$2}END{print (total-free-cache-buffer)/1024}' /proc/meminfo
1595.87

  

  

  

  

  

posted @ 2021-04-04 12:04  苍茫宇宙  阅读(267)  评论(0编辑  收藏  举报