统计行数
wc -l
查看docker服务日志
docker ps | grep template | awk '{print $1}' | xargs docker logs -f --tail=100
awk 表述行取值
xargs 表示参数传入
第一列为d2d6812cb25a,第二列以gomain开头,format结尾,然后打印整条数据
docker ps | awk '$1 == "d2d6812cb25a" && $2 ~ /^g.*t$/ {print $0}'
其中$1如果比较的是数字,不加引号,字符串需要加引号
单个*不能表示字符省略,需要配合点号
awk本身是一种编程语言
docker ps | awk 'BEGIN {line = 0} {line += 1} END {print line} '
共计有40条记录
过滤出g开头的
docker ps | awk 'BEGIN {line = 0} $2 ~ /^g.*/ {line += 1} END {print line} '
共计33条记录
备注 BEGIN 和 END 必须大写
paste命令可用于合并文件的列
打印下序列 0~40
docker ps | awk 'BEGIN {i = 0} {print i++} END {print i}'
使用paste拼接
docker ps | awk 'BEGIN {i = 0} {print i++} END {print i}' | paste -sd+
效果为:
0+1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40
s是串行 --serial
d是用指定的间隔字符取代跳格字符,上例中使用的是加号
上述命令有以下几个变种
# 1
docker ps | awk 'BEGIN {i = 0} {print i++} END {print i}' | paste -sd +
# 2
docker ps | awk 'BEGIN {i = 0} {print i++} END {print i}' | paste -s -d +
# 3
docker ps | awk 'BEGIN {i = 0} {print i++} END {print i}' | paste -d + -s
结果一致
使用bc计算以上的值
docker ps | awk 'BEGIN {i = 0} {print i++} END {print i}' | paste -sd+ | bc -l
l表示使用标准的数学库
-l, --mathlib
Define the standard math library.
其实不加 l 也能计算
docker ps | awk 'BEGIN {i = 0} {print i++} END {print i}' | paste -sd+ | bc