![파일의 마지막 문자를 찾아 그 뒤에 문자열을 추가하시겠습니까? [복사]](https://linux55.com/image/91041/%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EB%A7%88%EC%A7%80%EB%A7%89%20%EB%AC%B8%EC%9E%90%EB%A5%BC%20%EC%B0%BE%EC%95%84%20%EA%B7%B8%20%EB%92%A4%EC%97%90%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EC%B6%94%EA%B0%80%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
를 사용할 수 있으므로 추가 줄을 추가하는 것은 간단합니다 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 "$!";