Lệnh Unix để grep một phạm vi thời gian


2

Tôi có một tệp nhật ký, được lưu với ngày cụ thể. Tôi muốn tìm nạp các mục nhật ký trong một khoảng thời gian và ngày cụ thể vào một tệp khác.

Ví dụ: tất cả các mục từ 2014-12-04 00:00:00 đến 2014-12-04 17:00:00

Câu trả lời:


2

Hãy thử egrep:

pttrn="2014-12-04 0[0-9]"
pttrn="${pttrn}|2014-12-04 1[0-6]"
pttrn="${pttrn}|2014-12-04 17:00:00"

egrep "${pttrn}" <logfile>

Mẫu egrep chứa ba phần. Phần đầu tiên lấy mọi thứ từ 00:00:00 đến 09:59:59. Phần thứ hai lấy mọi thứ từ 10:00:00 đến 16:59:59 và phần thứ ba lấy 17:00:00.


Đầu tiên bạn egreploại bỏ các giá trị bắt đầu với 08hoặc 09(ví dụ, thời gian giữa 08:0009:59), và một trong những thứ hai cho phép 17:10, 17:20, 17:30, vv ..., để có được thông qua.
G-Man

@ G-Man Cảm ơn. Bạn đúng. Tôi nghĩ rằng tôi đã sửa nó bây giờ.
Daniel Goldfarb

Có vẻ như nó nên hoạt động. Nó có thể được đơn giản hóa để egrep "2014-12-04 (0[0-9]|1[0-6]|17:00:00)".
G-Man

0

Nếu bạn muốn khoảng thời gian 4 phút của nhật ký,

grep "01/APR/2014:16:3[5-9]" logfile

sẽ trả lại tất cả các dòng nhật ký trong khoảng từ 16:35 đến 16:39 vào ngày 01 tháng 4 năm 2014.

Giả sử bạn cần 5 ngày qua bắt đầu từ ngày 17 tháng 9 năm 2014, bạn có thể sử dụng như sau:

grep "1[3-7]/Sep/2011" logfile

Hy vọng điều này sẽ giúp,


0

Bạn có thể chọn một dòng bắt đầu và một dòng kết thúc với, vd sed:

sed -n '/Dec  5 11:00/,/Dec  5 12:00/p' /var/log/daemon.log

Điều này sẽ in tất cả các dòng từ dòng đầu tiên với Dec 5 11:00tối đa (và bao gồm) dòng đầu tiên với Dec 5 12:00. Điều này giả sử nhật ký là tuần tự thời gian (tức là tất cả các dòng theo thứ tự thời gian). Các -nlà để ngăn chặn hành động mặc định của in mỗi dòng.


Nhưng điều này giả định rằng có những mục cho Dec 5 11:00Dec 5 12:00, phải không? Nếu Dec 5 10:59ngay lập tức theo sau Dec 5 11:01, thì sedsẽ không biết bắt đầu từ đâu. Và nếu có một Dec 5 11:00, nhưng sau đó Dec 5 11:59được theo sau bởi Dec 5 12:01, sedsẽ không biết được nơi để dừng lại.
G-Man

1
Thật; bạn có thể bỏ qua :00phần đó, nhưng sau đó một lần nữa sẽ phải có ít nhất một dòng nhật ký mỗi giờ. Cá nhân tôi muốn điều chỉnh kịch bản cho phù hợp với dữ liệu; thậm chí có thể áp dụng một số peroo foo.
wurtel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.