2011-01-19 4 views
0

처리해야하는 대용량 로그 파일이 있습니다. 1 주일 후에 새로운 것을 얻을 수 있습니다. 새 줄 (로그)이 추가 될 때와 동일합니다.파일의 행을 추가하는 쉘 스크립트

새로운 추가 된 라인이 필요합니다.

어떻게하면됩니까?

편집 : 지금까지 나오지도 시도했지만

답변

1

diff 당신이 한 변경 사항이 추가 및/또는 제거 된 행으로 제한됩니다 이러한 파일 사이의 모든 차이점을 찾을 수 있도록 할 성공하지 . 대부분의 리눅스 배포판에서는 GNU diffutils의 일부분이지만 거의 모든 Uinix 계열 시스템에 존재합니다. 라인이 로그 파일에 추가하고 난 당신이 예전 있다고 가정하는 경우

+0

재미있게 나 자신이 해결책을 얻지 못했습니다. 감사. 나는 후행 "<"를 자동적으로 제거하는 방법을 찾지 못했습니다. 따라서 "diff file1 file2 | sed s/\ <\ /" "... – faboolous

+0

@fabfile : 시도해보십시오 :'diff --old-line -changed-group-format = ''log1 log2' (불행히도, 그것은 많이 있습니다.) -format = ''- new-line-format = $ '% l \ n' 'sed'를 사용하는 것보다 더 장황하고 아마도 이식성이 떨어질 것입니다). –

0

, 당신은 시도 할 수 :

tail -$(($(cat newLogFileName | wc -l)-$(cat oldLogFileName | wc -l))) newLogFileName 
+0

두 개의 UUoC! 'wc -l

+0

젠장, 나는 게시하기 전에 생각 하는게 좋겠다 ... 작은 질문 : UUoCs 의미? – Flyounet

0

comm -13 oldfile newfile 당신 만이이를 새에 나타나는 선을 얻을 것이다.

+0

일부 상황에서는 정렬되지 않은 파일에 대해 불만을 제기 할 수 있습니다. –

0
# get new.log 
tail -n+$(($(wc -l < old.log)+1)) new.log 
mv new.log old.log