【发布时间】:2015-08-01 13:25:41
【问题描述】:
我们有脚本可以从 squid access.log 中删除除域名之外的所有内容,并报告每个 URL 的总命中数,我有一个生成的两个文件,一个有缓存命中,另一个有缓存未命中,我正在寻找一种方法来组合这些文件如下 -
cat TCP_MISS_data.txt
Domains CacheMiss
abc.com 21
def.com 38
xyz.com 12
cat TCP_HITS_data.txt
Domains CacheHits
def.com 28
abc.com 10
xyz.com
cat Combined_data.txt
Domains CacheMiss CacheHits TotalHits
abc.com 21 10 31
def.com 38 28 66
xyz.com 12 0 12
感谢任何帮助。
更新:
我使用下面的 awk 单行从访问日志中删除域和命中,它输出一个包含所有域及其命中的文件,而不管 HITS 和 MISSES。
猫访问.log | awk '{打印 $7}' | awk '!/^http/{sub(/^/,"http://")}1' | awk -F"/" '{打印 $3}' | awk -F":" '{打印 $1}' | awk -F"。" '{f1=NF;f2=NF-1;打印 $f2 "." $f1}' |排序 |唯一的-c |排序 -n为了区分我在下面所做的命中和未命中 -
猫访问.log | grep TCP_MISS | awk '{打印 $7}' | awk '!/^http/{sub(/^/,"http://")}1' | awk -F"/" '{打印 $3}' | awk -F":" '{打印 $1}' | awk -F"。" '{f1=NF;f2=NF-1;打印 $f2 "." $f1}' |排序 |唯一的-c |排序 -n > TCP_MISS_data 猫访问.log | grep TCP_HIT | awk '{打印 $7}' | awk '!/^http/{sub(/^/,"http://")}1' | awk -F"/" '{打印 $3}' | awk -F":" '{打印 $1}' | awk -F"。" '{f1=NF;f2=NF-1;打印 $f2 "." $f1}' |排序 |唯一的-c |排序 -n > TCP_HITS_data现在我得到了两个文件,TCP_MISS_data 和 TCP_HITS_data,它们的行不相等,我尝试按照我上面的帖子中的说明合并这两个文件。
【问题讨论】:
-
你被困在哪里了?
-
Tom 我仍然是 awk 的新手,但我会尝试完成 Kent 的一个班轮。谢谢。
-
新手并没有错,您只需要在您的问题中表现出一些研究成果。如果您自己尝试过某些东西但它不起作用,请edit 您的问题向我们展示。否则不清楚你的问题到底出在哪里,看起来你只是想让别人为你写一些代码。