sed에 사용된 정규 표현식은 간격 사이에 원하는 결과를 제공하지 않습니다.

sed에 사용된 정규 표현식은 간격 사이에 원하는 결과를 제공하지 않습니다.

두 날짜 사이의 데이터를 가져오기 위해 sed 명령을 사용하고 있습니다. 날짜 패턴을 일치시키기 위해 정규 표현식을 사용하고 있습니다.

내가 사용하는 샘플 데이터는 다음과 같습니다.

 192.168.0.123 - - [25/Nov/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [26/Nov/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [26/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [27/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [27/Nov/2018:13:25:53 +0530] "Data 6"
 192.168.0.123 - - [28/Nov/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [28/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [28/Nov/2018:13:25:53 +0530] "Data 6"
 192.168.0.123 - - [30/Nov/2018:13:25:53 +0530] "Data 6"
 192.168.0.123 - - [01/Dec/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [01/Dec/2018:13:25:09 +0530] "Data 4"

두 가지 문제에 직면해 있습니다.

  1. 마지막 날짜가 처음 발생하기 전에만 출력을 제공합니다. 즉, 사용된 명령이 다음과 같은 경우입니다.

    $ sed -n '/26/Nov/2018/,/28/Nov/2018/p' 파일.로그

그러면 내가 얻는 결과는 다음과 같습니다.

 192.168.0.123 - - [25/Nov/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [26/Nov/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [26/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [27/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [27/Nov/2018:13:25:53 +0530] "Data 6"
 192.168.0.123 - - [28/Nov/2018:13:25:09 +0530] "Data 4"

하지만 난 기대하고 있어

 192.168.0.123 - - [25/Nov/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [26/Nov/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [26/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [27/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [27/Nov/2018:13:25:53 +0530] "Data 6"
 192.168.0.123 - - [28/Nov/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [28/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [28/Nov/2018:13:25:53 +0530] "Data 6"
  1. 로그에 존재하지 않는 날짜를 입력한 경우. 모든 데이터를 파일 끝까지 가져오는 반면, 데이터가 존재하는 마지막 위치까지 가져오길 원합니다. 즉, 명령이 다음과 같은 경우입니다.

    $ sed -n '/26/Nov/2018/,/29/Nov/2018/p' 파일.로그

그러면 출력은 다음과 같습니다.

 192.168.0.123 - - [25/Nov/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [26/Nov/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [26/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [27/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [27/Nov/2018:13:25:53 +0530] "Data 6"
 192.168.0.123 - - [28/Nov/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [28/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [28/Nov/2018:13:25:53 +0530] "Data 6"
 192.168.0.123 - - [30/Nov/2018:13:25:53 +0530] "Data 6"
 192.168.0.123 - - [01/Dec/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [01/Dec/2018:13:25:09 +0530] "Data 4"

나는 그것이 다음과 같을 것으로 예상했지만

 192.168.0.123 - - [25/Nov/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [26/Nov/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [26/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [27/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [27/Nov/2018:13:25:53 +0530] "Data 6"
 192.168.0.123 - - [28/Nov/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [28/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [28/Nov/2018:13:25:53 +0530] "Data 6"

답변1

나는 사용하는 것을 선호한다날짜 grep날짜를 기준으로 로그를 구문 분석합니다.

[root@server22 ~]# cat file.log 
 192.168.0.123 - - [25/Nov/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [26/Nov/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [26/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [27/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [27/Nov/2018:13:25:53 +0530] "Data 6"
 192.168.0.123 - - [28/Nov/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [28/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [28/Nov/2018:13:25:53 +0530] "Data 6"
 192.168.0.123 - - [30/Nov/2018:13:25:53 +0530] "Data 6"
 192.168.0.123 - - [01/Dec/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [01/Dec/2018:13:25:09 +0530] "Data 4"

11월 26일부터 11월 29일 사이의 로그를 구문 분석합니다.

[root@server22 ~]# dategrep --start 26/Nov/2018:00:00:00 --end 29/Nov/2018:00:00:00 file.log --format "%d/%b/%Y:%H:%M:%S"
 192.168.0.123 - - [26/Nov/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [26/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [27/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [27/Nov/2018:13:25:53 +0530] "Data 6"
 192.168.0.123 - - [28/Nov/2018:13:25:09 +0530] "Data 4"
 192.168.0.123 - - [28/Nov/2018:13:25:11 +0530] "Data 5"
 192.168.0.123 - - [28/Nov/2018:13:25:53 +0530] "Data 6"

관련 정보