이벤트를 나타내는 일련의 타임스탬프가 있습니다. 예를 들면 다음과 같습니다.
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
옵션은 사용자가 첫 번째 열을 오름차순으로 정렬하고 두 번째 열을 내림차순으로 정렬하는 것일 수 있습니다(타임스탬프가 일치하는 경우 "이벤트" 앞에 "로그"를 배치).