따라서 파일을 열어서 일치하는 줄을 얻는 데 cat
사용 grep
하면 처리 할 특정 로그 세트로 작업 할 때만 가능합니다. 라인을 패턴과 일치시키는 방법이 필요하지만, 일치 후 라인의 일부만 반환합니다. 경기 전후의 부분은 지속적으로 다릅니다. 내가 사용하여 연주 한 sed
나 awk
,하지만 경기 전 부분을 삭제하거나 경기 후 일부를 반환하거나 라인을 필터링하는 방법을 알아낼 수 없었던 어느 작동합니다. 이것은 필터링 해야하는 라인의 예입니다.
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 }
내가 필요한 부분은 "스톨"된 후의 모든 것입니다.
이것의 배경은 무언가가 얼마나 자주 멈추는 지 알 수 있다는 것입니다.
cat messages | grep stalled | wc -l
내가해야 할 일은 특정 노드가 몇 번이나 멈추었는지 알아내는 것입니다 ( "중지"후 각 콜론 앞 부분으로 표시됩니다.) 그냥 grep하면 (예 : 20 :) 소프트 실패한 줄을 반환 할 수 있지만 스톨이 없어서 도움이되지 않습니다. 스톨 된 부분 만 필터링하면 스톨 된 노드에서 특정 노드를 잡을 수 있습니다.
모든 의도와 목적을 위해, 이것은 표준 GNU 코어 유틸리티를 갖춘 freebsd 시스템이지만 도움을 줄 수있는 추가 장비는 설치할 수 없습니다.
sed
솔루션을 특별히 공백 취급하지 않습니다.