안녕하세요


table 에 proto_header라는 컬럼이 있고 해당 칼럼을 조회 했을때 아래와 같은 다중 행이 띁다고 가정할때 특정 키워드만 조회할 수 있는 방안에 대해서 자문을 구하고 싶습니다.


예를들어 아래와 같은 CSV파일이 있습니다.


1.1.1.1,80,"GET /arm/win/xxxx2.msi HTTP/1.1

Connection: Keep-Alive

Accept: */*

Accept-Encoding: identity

If-Unmodified-Since: Tue, 16 May 2017 12:27:02 GMT

Range: bytes=0-4913

User-Agent: Microsoft BITS/7.5

Host: xxx.xxxx.com


 HTTP/1.1 206 Partial Content

Server: Apache

Last-Modified: Tue, 16 May 2017 12:27:02 GMT

ETag: ""4600-54fa349f7d4bb""

Accept-Ranges: bytes

Content-Type: application/x-msi

Date: Sun, 09 Jul 2017 21:45:34 GMT

Content-Range: bytes 0-4913/17920

Content-Length: 4914

Connection: keep-alive"


해당 내용은 아래의 URL에 접속했을 때 TCP stream이라고 할 때


저는 불필요한 정보 없이 아래와 같은 데이터의 중복값을 제외하고 추출하고 싶습니다.


1.1.1.1:80/arm/win/xxxx2.msi

xxx.xxxx.com/arm/win/xxxx2.msi 



하지만 해당내용을  DB화 하면  아래와 같이 결과가 나옵니다.


dst_ip       | 1.1.1.1

dst_port     | 80

proto_header | GET /arm/win/xxxx2.msi HTTP/1.1\r

             | Connection: Keep-Alive\r

             | Accept: */*\r

             | Accept-Encoding: identity\r

             | If-Unmodified-Since: Tue, 16 May 2017 12:27:02 GMT\r

             | Range: bytes=0-5369\r

             | User-Agent: Microsoft BITS/7.5\r

             | Host: xxx.xxxx.com\r

             | \r

             |  HTTP/1.1 206 Partial Content\r

             | Server: Apache\r

             | Last-Modified: Tue, 16 May 2017 12:27:02 GMT\r

             | ETag: "4600-54fa349f7d4bb"\r

             | Accept-Ranges: bytes\r

             | Content-Type: application/x-msi\r

             | Date: Mon, 10 Jul 2017 01:19:19 GMT\r

             | Content-Range: bytes 0-5369/17920\r

             | Content-Length: 5370\r

             | Connection: keep-alive\r

             | \r





맨 윗줄만 표기하게 해서 



  dst_ip | dst_port |  proto_header        |


1.1.1.1  |     80     | /arm/win/xxxx2.msi  |

이런식에 결과를 얻어야 중복데이터가 많아 중복 배제가 가능할텐데 위 처럼 \r로 이어지는 데이터가 많아 중복 제거가 어렵습니다.

이런 경우 어떻게 고유값을 얻을수 있을까요?