가장 가까운 동일하거나 이전 타임스탬프와 일치합니다.

가장 가까운 동일하거나 이전 타임스탬프와 일치합니다.

이벤트를 나타내는 일련의 타임스탬프가 있습니다. 예를 들면 다음과 같습니다.

20150401_1120    // event a
20150401_1211    // event b

그리고 일련의 로그 파일인 각 로그 파일은 고정된 기간을 나타내며 해당 기간의 시작으로 타임스탬프가 표시됩니다. 예를 들면 다음과 같습니다.

$ ls | egrep -o [0-9]{8}_[0-9]{4}

다음을 제공합니다:

20150401_1100
20150401_1120    // contains event a
20150401_1140
20150401_1200    // contains event b
20150401_1220

이벤트가 포함된 로그 파일(예: 이벤트와 동일한 타임스탬프 또는 가장 가까운 이전 타임스탬프)을 가져오고 싶습니다. 이 작업을 효율적으로 수행할 수 있는 명령이나 요령이 있습니까?

효율적이라는 것은 글을 많이 쓸 필요가 없다는 뜻입니다. :)

답변1

ue이벤트 타임스탬프가 있는 파일과 ul로그가 있는 파일을 호출해 보겠습니다 .

나는 매우 직관적인 방법을 생각해 냈습니다.

( awk '{printf "%s a\n",$1 }' ul ; awk '{printf "%s b\n",$1 }' ue ) |\
 sort |\
 awk '/b/ { print before ;} /a/ { before=$1 ;} '

어느

  • 이벤트 및 타임스탬프 목록에 레이블을 추가하면 어떤 레이블이든 사용할 수 있지만 로그 파일 레이블은 이벤트 레이블 앞에 와야 합니다. (*)
  • 정렬별로 병합합니다.
  • awk는 이전 로그 파일을 검색합니다.

결과 :

20150401_1120
20150401_1200

(*) 일부 스마트 sort옵션은 사용자가 첫 번째 열을 오름차순으로 정렬하고 두 번째 열을 내림차순으로 정렬하는 것일 수 있습니다(타임스탬프가 일치하는 경우 "이벤트" 앞에 "로그"를 배치).

관련 정보