파일의 마지막 문자를 찾아 그 뒤에 문자열을 추가하시겠습니까? [복사]

파일의 마지막 문자를 찾아 그 뒤에 문자열을 추가하시겠습니까? [복사]

를 사용할 수 있으므로 추가 줄을 추가하는 것은 간단합니다 echo "line" >> file. 하지만 새 줄을 시작하지 않고 파일의 마지막 문자 뒤에 문자열을 추가하려면 어떻게 해야 합니까? 이를 수행하는 좋은 방법은 무엇입니까?

답변1

올바른 형식의 Unix 텍스트 파일~ 해야 하다파일 끝에는 후행 개행 문자가 있습니다. 원하는 것을 얻으려면 문자열을 배치해야 합니다.앞으로저것기존의후행 개행 문자.

다음 테스트 파일을 고려해보세요.

$ cat File
1
2
3

이제 마지막 줄에 단어를 추가해 보겠습니다.앞으로마지막 개행 문자:

$ sed '$s/$/new words/' File
1
2
3new words

또는 파일을 그 자리에서 편집하려면 다음 -i옵션을 사용하십시오.

sed -i.bak '$s/$/new words/' File

작동 방식:

  • $

    첫 번째는 $sed에게 파일의 마지막 줄 이후에만 명령을 실행하도록 지시합니다.

  • s/$/new words/

    파일의 마지막 줄의 경우 이것은 new words줄의 끝에 있지만앞으로마지막 개행 문자입니다.

    대체 명령에서는 $줄의 끝을 나타냅니다.

답변2

전체 파일을 다시 쓰지 않으려면 파일의 끝을 찾아서 문자를 백업하고 쓸 수 있습니다.

일반 Unix 쉘 도구를 사용하여 이 작업을 수행하는 것은 약간 불확실합니다.

그러나 Perl은 모든 것을 할 수 있습니다. Ruby나 Python 또는 기타 모든 기능을 갖춘 스크립팅 언어를 사용할 수도 있습니다.

펄 예:

#!/usr/bin/env perl

use strict;
use Fcntl qw(:seek);

open(F, '+<', 'testfile') or die "$!";
seek(F, -1, SEEK_END) or die "$!";
print F "new data\n";
close(F) or die "$!";

관련 정보