저는 cygwin을 사용하고 있으며 grep을 사용한 스크립팅 경험이 있습니다. 이를 통해 거대한 로그 파일에서 특정 문자열을 찾을 수 있습니다. 이제 나는 다음 과제에 직면해 있는데 어떻게 해결해야 할지 모르겠습니다. 기본적으로 파일의 숫자가 이전 줄의 숫자와 동일한지 확인하고 싶습니다. 다음 파일을 고려하십시오.
이 메시지의 두 번째 열은 밀리초 단위의 상대 시간입니다.
이전 값과의 차이를 확인하고 싶습니다. 차이가 50밀리초(717 - 667 > 50)보다 큰 이벤트를 표시하고 싶습니다.
이 작업을 수행하는 방법을 아는 사람이 있나요? 내가 grep을 사용하는 방식은 구멍에 있는 전체 파일을 필터링하는 것입니다. 훌륭하고 강력하지만 이제는 여기서 사용할 수 없습니다.
답변1
일반적인 작업은 다음과 같습니다 awk
.
awk '$2 - prev > 50; {prev = $2}' < file
또는 두 번째 필드에 숫자가 있는 행만 고려하고 숫자가 있는 첫 번째 행을 건너뜁니다.
awk 'prev != "" && $2 - prev > 50; $2 ~ /[0-9]/ {prev = $2}' < file