![Awk,但仅打印字段的一部分](https://linux22.com/image/1563717/Awk%EF%BC%8C%E4%BD%86%E4%BB%85%E6%89%93%E5%8D%B0%E5%AD%97%E6%AE%B5%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86.png)
我只关心日志行中特定字段(主机名)的一部分,并希望打印该部分的所有唯一出现次数。我目前正在做类似的事情:
zcat $file | awk '$2~/f/ {print $14}' | sort | uniq -c | sort -rn
问题是字段 14 会很长,并且包含一堆内容,例如
/=/%%/25284687/hostname/auhga/giu/2985729/%/etc...
主机名可能会有所不同,而我只想打印唯一的主机名,对它们进行排序和计数等。我该如何更好地构造 awk 命令来实现这一点?重要的是要注意,在 /hostname/ 部分前面和后面添加的所有内容都会有所不同。
答案1
如果主机名始终位于输出/
中的第 4 个和第 5 个之间awk
,则此过程将提取它们:
cut -d / -f 5
将其放置在原来的之后awk
。