Tôi có một tệp truy cập Apache.log, có dung lượng khoảng 35GB .. Xem qua nó không phải là một tùy chọn nữa mà không phải chờ đợi nhiều.Split access.log file theo ngày sử dụng các công cụ dòng lệnh
Tôi muốn chia nhỏ trong nhiều tệp nhỏ, bằng cách sử dụng ngày làm tiêu chí chia tách.
Ngày có định dạng "[15/Oct/2011: 12: 02: 02 +0000]". Bất kỳ ý tưởng làm thế nào tôi có thể làm điều đó bằng cách sử dụng chỉ bash scripting, chương trình thao tác văn bản tiêu chuẩn (grep, awk, sed, và thích), đường ống và chuyển hướng?
Tên tệp đầu vào là access.log. Tôi muốn tập tin đầu ra có định dạng như access.apache.15_Oct_2011.log (mà sẽ làm các trick, mặc dù không thoải mái khi sắp xếp ..)
Bạn nói đúng, thưa ngài. Tôi vừa thử nghiệm giải pháp perl, và giải pháp awk nhanh hơn gấp 3 lần. Tôi nghi ngờ nó đã làm với thực tế là ví dụ awk không sử dụng biểu thức thông thường nhưng tách chuỗi đơn giản, mà có thể hiệu quả hơn. Đánh dấu là câu trả lời được chấp nhận. –
Tôi vừa cập nhật nó để có đầu ra tên tệp tốt hơn. –
Ồ, và tôi chắc chắn đang sử dụng tính năng này để sản xuất với 20 GB tệp mà không gặp sự cố nào. Mất khoảng 2 GB/phút trên hệ thống của tôi. –