최신 텍스트 파일에서 이전 텍스트 파일 빼기

최신 텍스트 파일에서 이전 텍스트 파일 빼기

새 파일에서 파일의 이전 복사본 내용을 제거하는 방법은 무엇입니까?

예를 들어:

메일 파일이 주어지면 메일 파일의 복사본을 만들고 복사본에 대한 작업을 수행합니다. 작업 과정에서 원본 메일 파일의 크기가 증가합니다. 새 파일에서 오래된 파일에 저장된 오래된 메시지를 삭제하는 방법.

줄 수를 세어 새 파일의 맨 위에서 제거할 수 있을까요? bash에서 쉽게 할 수 있는 방법이 있나요?

감사해요.

답변1

파일이 동일한 형식(Linux에서는 대문자를 포함해야 함)이라고 가정하면(예: 한 줄에 하나의 이메일 주소) comm원하는 작업이 수행됩니다.

$ cat old <(echo '--') new
[email protected]
[email protected]
[email protected]
[email protected]
--
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
$ comm -i13 <(sort old) <(sort new)
[email protected]
[email protected]
[email protected]

옵션은 ( ) 에만 주소를 표시하지 않고 두 파일 모두 ( ) 에 주소를 표시하지 않도록 -13지시합니다 . 따라서 출력에는 찾은 주소만 표시됩니다.commold-1-3오직존재하다 new.

BSD를 사용 중이고 파일이 아직 대소문자에 대해 정규화되지 않은 경우 의 comm스위치를 추가하여 대소문자를 구분하지 않는 일치를 수행할 수 있습니다.-i

답변2

라인에서 인쇄 시작을 사용할 수 있습니다 tail -n+<NUM_LINE> file.fileNUM_LINE

mailfile1mailfile2결과가 저장되는 행 수를 삭제하려면 다음을 수행하십시오 mailfile2.new.

tail -n+$(( $(wc -l <mailfile1) + 1)) mailfile2 > mailfile2.new
  • wc -l <mailfile1인쇄 라인 수mailfile1
  • $(( $(wc -l <mailfile1) + 1))mailfile1+1로 줄 수를 인쇄하십시오.

관련 정보