Vì vậy, việc mở một tệp với cat
và sau đó sử dụng grep
để có được các dòng khớp chỉ cho đến nay khi tôi làm việc với bộ nhật ký cụ thể mà tôi đang xử lý. Nó cần một cách để khớp các dòng với một mẫu, nhưng chỉ trả về phần của dòng sau khi khớp. Phần trước và sau trận đấu sẽ thay đổi liên tục. Tôi đã chơi bằng cách sử dụng sed
hoặc awk
, nhưng không thể tìm ra cách lọc dòng để xóa phần trước trận đấu, hoặc chỉ trả lại phần sau trận đấu, một trong hai sẽ hoạt động. Đây là một ví dụ về một dòng mà tôi cần lọc:
2011-11-07T05:37:43-08:00 <0.4> isi-udb5-ash4-1(id1) /boot/kernel.amd64/kernel: [gmp_info.c:1758](pid 40370="kt: gmp-drive-updat")(tid=100872) new group: <15,1773>: { 1:0-25,27-34,37-38, 2:0-33,35-36, 3:0-35, 4:0-9,11-14,16-32,34-38, 5:0-35, 6:0-15,17-36, 7:0-16,18-36, 8:0-14,16-32,34-36, 9:0-10,12-36, 10-11:0-35, 12:0-5,7-30,32-35, 13-19:0-35, 20:0,2-35, down: 8:15, soft_failed: 1:27, 8:15, stalled: 12:6,31, 20:1 }
Phần tôi cần là tất cả mọi thứ sau khi "bị đình trệ".
Bối cảnh đằng sau điều này là tôi có thể tìm hiểu mức độ thường xuyên một cái gì đó quầy hàng:
cat messages | grep stalled | wc -l
Điều tôi cần làm là tìm ra số lần một nút nhất định bị đình trệ (được biểu thị bằng phần trước mỗi dấu hai chấm sau khi "bị đình trệ". Nếu tôi chỉ grep cho điều đó (ví dụ 20 :) nó có thể trả về các dòng bị lỗi mềm, nhưng không có quầy hàng nào không giúp tôi. Tôi chỉ cần lọc phần bị đình trệ để sau đó tôi có thể grep cho một nút cụ thể trong số các nút bị đình trệ.
Đối với tất cả ý định và mục đích, đây là một hệ thống freebsd với các tiện ích lõi GNU tiêu chuẩn, nhưng tôi không thể cài đặt thêm bất cứ thứ gì để hỗ trợ.
sed
giải pháp và không xử lý khoảng trắng đặc biệt.