필터를 통과한 파일을 더 적은 방법으로 추적하고 찾는 방법

필터를 통과한 파일을 더 적은 방법으로 추적하고 찾는 방법

기본적으로 증가하는 로그 파일을 찾고 검색하고 추적하고 싶습니다.sed필터 후. 테스트 tail -f하기 위해 먼저 조합 sedless시도했지만 소용이 없었습니다 tail -f.less +F

  • tail -f file | less +FCtrl-- +를 눌러 C꼬리 추적을 중지할 때까지 less가 실행되지 않습니다. less옵션은 -B -b 1도움이 되지 않습니다.
  • less +F -f <(tail -f file)같은 행동을 보입니다.

내가 생각한 것보다 더 좋고 간단한 해결책을 아는 사람이 있다면 매우 감사하겠습니다.

답변1

직접 배관이 안되서 임시파일로 연결을 해보았습니다 tail -f. 마침내 다음과 같은 결과를 얻었습니다sedless +F

function lessx {
    [ -f "$1" ] || { echo "First argument must be a file"; return 1; }
    local tmpfile=$(mktemp /tmp/"$(basename "$1.XXX")")
    [ -f "$tmpfile" ] || { echo '`mktemp` failed'; return 1; }
    tail -f "$1" | stdbuf -i0 -o0 sed 's:\\\?\\n:\n:g' > "$tmpfile" &
    less +F "$tmpfile"
    kill %% # kill the tail pipeline, after less exits
    rm "$tmpfile"
}

내가 원하는 것보다 더 복잡하기는 하지만 이 작업은 수행됩니다. 내 SunOS는 tail이를 이해하지 못 하므로 파이프를 수동으로 --pid종료합니다 .tail

관련 정보