之前写的文章如下:Linux 简单使用awk命令
awk "{ print $3 }"与awk '{ print $3 }'的区别
- awk "{ print $3 }" 不会输出输入数据的第3列,因为双引号的变量$3会事先被shell解析。
- awk '{ print $3 }' 会输出输入数据的第3列,因为单引号里的变量$3不会被shell解析。
awk "{ print $3 }"的效果
decisionmaker@tdar-srv:~$ sudo docker images | grep "^<none>" | awk "{ print $3 }" | head -n 10
<none> <none> cacd883da894 3 days ago 761MB
<none> <none> c79ed053e535 3 days ago 761MB
<none> <none> 21a60c91ac3a 3 days ago 584MB
<none> <none> 249134be5b6f 3 days ago 470MB
<none> <none> 2deea4c664c6 3 days ago 450MB
<none> <none> cf0ae83a80eb 5 weeks ago 2.3GB
<none> <none> a754860b7ce8 6 weeks ago 2.15GB
<none> <none> a29947cdabf9 2 months ago 1.03GB
<none> <none> 38c97337ca10 2 months ago 1.03GB
<none> <none> 7bfb2f106f75 2 months ago 1.03GB
awk '{ print $3 }'的效果
decisionmaker@tdar-srv:~$ sudo docker images | grep "^<none>" | awk '{ print $3 }' | head -n 10
cacd883da894
c79ed053e535
21a60c91ac3a
249134be5b6f
2deea4c664c6
cf0ae83a80eb
a754860b7ce8
a29947cdabf9
38c97337ca10
7bfb2f106f75
当输入数据的列值含有空格时,awk输出的数据可能不符合预期
ecisionmaker@tdar-srv:~$ sudo docker images | head -n 10
REPOSITORY TAG IMAGE ID CREATED SIZE
docker_flask_web latest a639e083bef9 3 days ago 761MB
<none> <none> cacd883da894 3 days ago 761MB
docker_django_web latest c08331dfd077 3 days ago 761MB
<none> <none> c79ed053e535 3 days ago 761MB
<none> <none> 21a60c91ac3a 3 days ago 584MB
docker_php_php81 latest 191dcc3d38e0 3 days ago 883MB
<none> <none> 249134be5b6f 3 days ago 470MB
<none> <none> 2deea4c664c6 3 days ago 450MB
php 8.1-fpm 8c08d993542f 13 days ago 449MB
# awk '{print $5}' 不会输出SIZE那一列,因为SIZE前面那一列的列值(CREATE那一列)含有空格,而空格是awk默认的列与列之间的分隔符
decisionmaker@tdar-srv:~$ sudo docker images | grep "^<none>" | awk '{print $5}' | head -n 10
days
days
days
days
days
weeks
weeks
months
months
months
只能采取折中方案,输出不含空格的列值:
# 输出不含空格的第1列,第3列,最后一列
decisionmaker@tdar-srv:~$ sudo docker images | grep "^<none>" | awk '{ print $1,$3,$NF }' | head -n 10
<none> cacd883da894 761MB
<none> c79ed053e535 761MB
<none> 21a60c91ac3a 584MB
<none> 249134be5b6f 470MB
<none> 2deea4c664c6 450MB
<none> cf0ae83a80eb 2.3GB
<none> a754860b7ce8 2.15GB
<none> a29947cdabf9 1.03GB
<none> 38c97337ca10 1.03GB
<none> 7bfb2f106f75 1.03GB