awk 通常表达式awk 'begin{ commands } pattern{ commands } end{ commands }'
,其中 begin 部分和 end 部分可以省略,即awk '{代码}'
,比如最简单的打印第一列awk '{print $1}'
就是这样。
运行原理:
print函数
print 后面可以跟多个参数,类似python print方法,各参数用空格分开" "
,以下是代表的各种变量意义:
$0
当前记录(这个变量中存放着整个行的内容)$1~$n
当前记录的第n个字段,字段间由FS分隔docker ps | awk '{print NR "\t" $1}'
表示 打印行号+制表符+第一列数据。
实践使用案例
删除指定关键字容器: 删除带有k8s关键字的所有容器
docker rm -f $(docker ps -a | grep k8s | awk '{print $1}')
'.'
符号用来表示对作为表达式输入的整个 JSON 对象的引用。'.<attributename>'
表示当前一级目录下的属性名称'.[<index>]'
,比如.[1]
表示访问数组第2个元素,.[]
表示所有元素迭代一次来遍历'.[<startindex>:<endindex>]'
实践使用案例
在容器docker inspect
的使用:
查看容器挂载目录有哪些: Mounts在第二级目录下
docker inspect kubelet | jq ".[].Mounts"
查看容器网络 Networks在第三级目录下
docker inspect kubelet | jq .[].NetworkSettings.Networks
jq 命令后面可以带双引号也可以不带
查看容器配置,比如镜像名称、环境变量、entrypoint:
docker inspect kubelet | jq .[].Config