두 번째 열을 사용하여 두 행을 비교합니다.

두 번째 열을 사용하여 두 행을 비교합니다.
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이 나열되고 두 번째 열에는 응답 길이가 나열됩니다. "/nonEtAk"는 존재하지 않는 경로이고 "/"는 기존 경로입니다.

존재하지 않는 경로에 대한 응답을 기존 경로에 대한 응답과 비교하여 거짓 긍정 응답을 제공하지 않는 URL을 추출하고 싶습니다. 그래서 저는 이것이 응답 길이를 비교함으로써 이루어질 수 있다는 것을 발견했습니다. 그래서 데이터는 이렇습니다. 그래서 도메인이 동일한 경우 두 번째 열을 비교하여 도메인으로 출력하고 싶습니다.

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

관련 정보