现在我有
grep "\sinstalled" combined_dpkg.log | awk -F ' ' '{print $5}' | sort | uniq -c | sort -rn
grep "\sinstalled" combined_dpkg.log | sort -k1 | awk '!a[$5]++' | cut -d " " -f1,5,6
如果有这样一种方法,或者有一种方法可以保留要在最后一个管道之后输出的值,那么我希望使用-f1,5,6将这两个值组合成一个包含$5计数的查询。
上面第一个bash命令的head -3结果:
11 man-db:amd64
10 libc-bin:amd64
9 mime-support:all
以及第二个bash命令:
2015-11-10 linux-headers-4.2.0-18-generic:amd64 4.2.0-18.22
2015-11-10 linux-headers-4.2.0-18:all 4.2.0-18.22
2015-11-10 linux-signed-image-4.2.0-18-generic:amd64 4.2.0-18.22
文件格式如下:
2015-11-05 13:23:53 upgrade firefox:amd64 41.0.2+build2-0ubuntu1 42.0+build2-0ubuntu0.15.10.1
2015-11-05 13:23:53 status half-configured firefox:amd64 41.0.2+build2-0ubuntu1
2015-11-05 13:23:53 status unpacked firefox:amd64 41.0.2+build2-0ubuntu1
2015-11-05 13:23:53 status half-installed firefox:amd64 41.0.2+build2-0ubuntu1
发布于 2017-10-28 18:00:36
grep "\sinstalled" combined_dpkg.log | sort -k1 | awk '!a[$5]' | cut -d " " -f1,5,6 | uniq -c
发布于 2017-10-28 19:12:56
根据你的评论:“对于每个软件包,找到安装的最早(第一个)版本。打印软件包名称、版本和安装的总次数。”
我猜这个awk应该可以。
awk '$0!~/ installed/{next} !($5 in a){a[$5]=$1 FS $5 FS $6; count[$5]++; next} count[$5]>0 && a[$5]~$6{count[$5]++} END{for (i in a) print a[i],count[i]}' file
https://stackoverflow.com/questions/46992588
复制相似问题