두 날짜 사이의 데이터를 가져오기 위해 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"
두 가지 문제에 직면해 있습니다.
마지막 날짜가 처음 발생하기 전에만 출력을 제공합니다. 즉, 사용된 명령이 다음과 같은 경우입니다.
$ 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"
로그에 존재하지 않는 날짜를 입력한 경우. 모든 데이터를 파일 끝까지 가져오는 반면, 데이터가 존재하는 마지막 위치까지 가져오길 원합니다. 즉, 명령이 다음과 같은 경우입니다.
$ 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"