我只关心日志行中特定字段(主机名)的一部分,并希望打印该部分的所有唯一出现次数。我目前正在做类似的事情:
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
。