Sed: 두 타임스탬프 사이의 줄 선택

Sed: 두 타임스탬프 사이의 줄 선택

60분 전과 지금의 두 타임스탬프 사이에서 행을 선택하고 싶습니다.

내 명령은

sed -n '/"$(date -d '60 minutes ago'  +"%H:%m")"/,/"$(date -d  +"%H:%m")"/p'  /var/www/html/glpi/files/_log/event.log/

하지만 나는 다음을 얻습니다.

sed: -e expression #1, char 14: unterminated address regex

답변1

귀하와 같은 sed 스크립트는 입력의 시작 및 종료 타임스탬프에 전적으로 의존합니다. 이렇게 하지 마십시오. awk를 사용하여 <=비교를 수행하면 정확한 시작 및 종료 타임스탬프가 입력에 존재하지 않는 경우에도 작동합니다. 예:

awk -v beg="$(date -d '60 minutes ago' +'%H:%m')" -v end="$(date +'%H:%m')" '(beg <= $0) && ($0 <= end)' /var/www/html/glpi/files/_log/event.log/

테스트할 샘플 입력/출력을 제공하지 않았기 때문에 이것은 필요한 것에 대한 테스트되지 않은 추측일 뿐입니다. 작동 여부는 주로 입력에서 타임스탬프가 나타나는 위치에 따라 다르지만(각 줄의 시작 부분에 있다고 가정합니다), 위치에 관계없이 스크립트를 간단히 조정할 수 있습니다.

관련 정보