를 사용할 수 있으므로 추가 줄을 추가하는 것은 간단합니다 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 "$!";