2番目の列を使用して2つの行を比較します。

2番目の列を使用して2つの行を比較します。
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

おすすめ記事