apache 로그 분석중 - ip 와 날짜출력, 중복제거

maindb의 이미지

apache 의 access_log 파일분석중

'test.html' 이라는 문자열이 들어간 부분의
ip 와 날짜만 출력하고 싶습니다. 물론 ip 중복은 제외 하구요.

egrep 'test.html' access_log | awk '{print $1}' | sort -u

위와 같이 하면 되긴 되는데 날짜가 빠지네요.

그래서 awk '{print $1}' 부분에 예를들어
'{print $1 $2 $4 $5}' 와 같이 바꿔보면 이상하게
통계숫자가 틀려집니다. ip 는 같은데 시간이 다를경우도
포함되므로 더 많아지겠죠... 결국 중복 ip 가 포함이 되는것이죠.

어떻게 하면 제가 원하는 결과를 정확히 얻을 수 있을까요?
조언부탁드립니다.

감사합니다.

sio4의 이미지

maindb wrote:
apache 의 access_log 파일분석중

'test.html' 이라는 문자열이 들어간 부분의
ip 와 날짜만 출력하고 싶습니다. 물론 ip 중복은 제외 하구요.

egrep 'test.html' access_log | awk '{print $1}' | sort -u

위와 같이 하면 되긴 되는데 날짜가 빠지네요.

그래서 awk '{print $1}' 부분에 예를들어
'{print $1 $2 $4 $5}' 와 같이 바꿔보면 이상하게
통계숫자가 틀려집니다. ip 는 같은데 시간이 다를경우도
포함되므로 더 많아지겠죠... 결국 중복 ip 가 포함이 되는것이죠.

어떻게 하면 제가 원하는 결과를 정확히 얻을 수 있을까요?
조언부탁드립니다.

감사합니다.

뭐가 "정확한 결과" 입니까? :-) 어떤 결과를 원하시는지, 질문만으로는 알 수 없군요. 특정 페이지를 본 IP를 알고 싶은데 그 IP에서 여러번 봤다면 마지막 본 것이 필요하신가요? 아니면 최초 본 시간이 알고싶으신가요? 어쨌든,

sort 명령의 메뉴얼에서 -k 옵션의 설명을 확인해보시면 뭔가 원하시는 것과 비슷한 것을 찾으실 수 있을지도 모르겠습니다.

[sio4@r2d2:~/ 11:43 814] echo "aaa bbb\nccc aaa"|sort
aaa bbb
ccc aaa
[sio4@r2d2:~/ 11:43 815] echo "aaa bbb\nccc aaa" | sort -k 2
ccc aaa
aaa bbb
[sio4@r2d2:~/ 11:44 816] 

하시려는 일에 따라서... 조금 긴 스크립트가 필요할지도 모르겠다는 생각도 드는군요.

--
"The love you take is equal to the love you make." The End, by Beatles

maindb의 이미지

sio4 wrote:
maindb wrote:
apache 의 access_log 파일분석중

'test.html' 이라는 문자열이 들어간 부분의
ip 와 날짜만 출력하고 싶습니다. 물론 ip 중복은 제외 하구요.

egrep 'test.html' access_log | awk '{print $1}' | sort -u

위와 같이 하면 되긴 되는데 날짜가 빠지네요.

그래서 awk '{print $1}' 부분에 예를들어
'{print $1 $2 $4 $5}' 와 같이 바꿔보면 이상하게
통계숫자가 틀려집니다. ip 는 같은데 시간이 다를경우도
포함되므로 더 많아지겠죠... 결국 중복 ip 가 포함이 되는것이죠.

어떻게 하면 제가 원하는 결과를 정확히 얻을 수 있을까요?
조언부탁드립니다.

감사합니다.

뭐가 "정확한 결과" 입니까? :-) 어떤 결과를 원하시는지, 질문만으로는 알 수 없군요. 특정 페이지를 본 IP를 알고 싶은데 그 IP에서 여러번 봤다면 마지막 본 것이 필요하신가요? 아니면 최초 본 시간이 알고싶으신가요? 어쨌든,

sort 명령의 메뉴얼에서 -k 옵션의 설명을 확인해보시면 뭔가 원하시는 것과 비슷한 것을 찾으실 수 있을지도 모르겠습니다.

[sio4@r2d2:~/ 11:43 814] echo "aaa bbb\nccc aaa"|sort
aaa bbb
ccc aaa
[sio4@r2d2:~/ 11:43 815] echo "aaa bbb\nccc aaa" | sort -k 2
ccc aaa
aaa bbb
[sio4@r2d2:~/ 11:44 816] 

하시려는 일에 따라서... 조금 긴 스크립트가 필요할지도 모르겠다는 생각도 드는군요.

아.. 제가 설명을 좀 이상하게나 드렸나 보군요.

'test.html' 이라는 문자열이 들어간 부분의
ip 와 날짜만 리스트출력
조건 : ip 중복 제외

원하는 결과는 위와 같습니다.

예를들어 아래의 코드는 제가 원하는 결과에서
날짜가 출력되지 않습니다.
egrep 'test.html' access_log | awk '{print $1}' | sort -u

다시한번 조언 부탁드릴께요 ^^

익명 사용자의 이미지

maindb wrote:

'test.html' 이라는 문자열이 들어간 부분의
ip 와 날짜만 리스트출력
조건 : ip 중복 제외

질문 참... 애매모호하군요!

IP_1 - DATE_1
IP_1 - DATE_2
IP_2 - DATE_3
IP_3 - DATE_4

위와 같은 결과가 있다면... 원하는 출력이 무엇인지요???

IP_1 - DATE_1
IP_2 - DATE_3
IP_3 - DATE_4

-----------------

IP_1 - DATE_2
IP_2 - DATE_3
IP_3 - DATE_4

----------------

IP_1 - DATE_1
___ - DATE_2
IP_2 - DATE_3
IP_3 - DATE_4

alwaysN00b의 이미지

ip 와 날짜 가 같이 출력 되는데
ip 중복만 제외하면

날짜값은 어떻게 해야하나요?

위 손님분 말씀대로

하나의 ip가 두번 접속했을때

'ip 중복 제외' 라는건 날짜를 출력 안하신다것 인데..

쩝..

예제 자료와 예상 출력등을 같이 올려 주시면

원하시는 답변을 얻을수 있을것 같습니다.

언제나 시작

maindb의 이미지

웃.. 죄송합니다..
스무고개를 원하는것은 아닌데 그렇게 되어버렸네요.

egrep 'test.html' access_log.1 | awk '{print $1 $2 $4 $5}' | sort -u

위와 같이 입력하면 아래와 같은 출력결과를 얻을 수 있습니다.

하지만... 아래 결과에서 같은 ip 는 제외 시킨 결과값을 얻고 싶습니다.
이제서야 제가 원하는 것을 정확히 설명(?) 한것 같군요...

61.102.76.74-[24/Aug/2005:00:58:33+0900]
61.103.165.136-[24/Aug/2005:01:55:59+0900]
61.103.24.162-[23/Aug/2005:23:23:35+0900]
61.103.24.162-[23/Aug/2005:23:24:07+0900]
61.104.3.64-[24/Aug/2005:02:00:28+0900]
61.104.81.45-[23/Aug/2005:21:17:35+0900]
61.106.212.209-[24/Aug/2005:01:28:39+0900]
61.109.77.208-[23/Aug/2005:21:57:28+0900]
61.110.226.98-[24/Aug/2005:00:26:12+0900]
61.248.164.250-[23/Aug/2005:21:30:42+0900]
61.248.164.250-[23/Aug/2005:21:38:51+0900]
61.248.164.250-[23/Aug/2005:22:29:15+0900]
61.248.222.62-[23/Aug/2005:22:43:51+0900]
61.249.152.25-[23/Aug/2005:22:52:22+0900]
61.249.185.10-[23/Aug/2005:23:52:24+0900]
61.249.56.136-[23/Aug/2005:22:16:10+0900]

익명 사용자의 이미지

grep 'test.html' | awk '{print $1,$4}' | sort -k 1 |uniq -f 2

(awk로 ip와 날짜만 잡아오는 경우)

질문의 의도로는, 날짜가 어떻다고 해도 상관 없다는 뜻 같군요.

man uniq 해보세요. (uniq -f 2는 날짜 필드는 skip한다는 뜻)

maindb의 이미지

Anonymous wrote:
grep 'test.html' | awk '{print $1,$4}' | sort -k 1 |uniq -f 2

(awk로 ip와 날짜만 잡아오는 경우)

질문의 의도로는, 날짜가 어떻다고 해도 상관 없다는 뜻 같군요.

man uniq 해보세요. (uniq -f 2는 날짜 필드는 skip한다는 뜻)

egrep 'test.html' access_log.1 | awk '{print $1,$4}'| sort -k 1 | uniq -f 2

한줄만 출력이 되네요.
눈으로 봐도 여러개 인데 ^^;

maindb의 이미지

감사합니다...
덕분에 해결했습니다.

egrep 'test.html' access_log.1 | awk '{print $1,$4}'| sort -u -k1,1

위와 같이 해서 원하는 결과를 얻었습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.