http://0-0.latam.corp.yahoo.com/ 6656
http://0-0.latam.corp.yahoo.com/nonEtAk 6670
http://1.avatar.yahoo.com/ 6644
http://1.avatar.yahoo.com/nonEtAk 6858
ここで、最初の列にはURLがリストされ、2番目の列には応答の長さがリストされます。 「/nonEtAk」は存在しないパス、「/」は既存のパスです。
存在しないパスへの応答を既存のパスへの応答と比較して、偽の肯定応答を提供しないURLを抽出したいと思います。だから私はこれが応答の長さを比較することによって達成できることを発見しました。だからデータはこんな感じです。したがって、ドメインが同じ場合は、2番目の列を比較してドメインに出力したいと思います。
0-0.latam.corp.yahoo.com/
たとえば、で与えられた長さ6656
と上記の0-0.latam.corp.yahoo.com/nonEtAk
長さです6670
。違いは14です。だからそれは偽の肯定です。
1.avatar.yahoo.com
そして差が200+の場合。だから興味深い内容があります。したがって、上記のデータを渡すと、結果は次のようになると予想されます。http://1.avatar.yahoo.com
答え1
承認のための特定の基準点を提供していないので、違いに基づいてランク付けすることをお勧めします。
awk '{
if ($1 ~ /nonEtAk/) {ss=substr($1,1,length($1)-7); rank[ss]+=$2}
else rank[$1]-=$2
} END {
for (key in rank) { print key, "difference is", rank[key] }
}' <(sed -e '/^$/d' file) | sort -r -k4
出力
http://1.avatar.yahoo.com/ difference is 214
http://0-0.latam.corp.yahoo.com/ difference is 14
牙
空白行をすべて削除して入力してください。awk
awk '' <(sed -e '/^$/d' file)
存在するawk
最初のフィールドに「nonEtAk」が含まれている場合は、ドメイン名の部分文字列を取得し(最後の7文字を削除して)、$ 2の値をドメイン名として入力された連想配列(ランク)に追加します。
if ($1 ~ /nonEtAk/) {ss=substr($1,1,length($1)-7); rank[ss]+=$2}
...そうでない場合は、ドメイン名でキーを付けた配列要素から$ 2を減算します。
else rank[$1]-=$2
...ファイルを読んだ後
`} END {`
...配列を繰り返し印刷します。
for (key in rank) { print key, "difference is", rank[key] }
...最後に、違いに基づいて降順に並べ替えます。
| sort -r -k4