현재 파일의 특정 문구와 일치하고 해당 파일의 모든 줄을 다른 파일의 전체 텍스트로 바꾸는 sed 명령이 있습니다. 이는 "### REPLACE EVERYTHING AFTER THIS LINE ###" 문구에 적용됩니다.
sed -n -e '1,/^### REPLACE EVERYTHING AFTER THIS LINE ###$/{ p; d; }' \
-e 'r replacement_file.txt' \
-e 'q' original_file.txt > original_file.txt.new &&
mv original_file.txt.new original_file.txt
이 명령은 텍스트 파일에 대해 작동하지만 파일을 자바스크립트 스타일 주석으로 바꿔야 할 때 약간의 문제가 발생했습니다. 일치시키려는 새 줄/구문은 이제 다음과 같습니다.이것이중 슬래시로 시작하는 모든 주석이 아닌 특정 주석):
//REPLACE AFTER THIS
현재 이중 슬래시를 피할 수 없기 때문에 장애물에 부딪혔습니다. 백슬래시를 사용하여 이 두 문자를 이스케이프 처리하려고 시도했지만 작동하지 않았습니다. 내 현재 (작동하지 않는) 명령은 다음과 같습니다.
sed -n -e ‘1,/^\/\/REPLACE AFTER THIS$/{ p; d; }’\
-e 'r replacement_file.txt' \
-e 'q' original_file.txt > original_file.txt.new && mv original_file.txt.new original_file.txt
미리 감사드립니다.
답변1
의견을 주신 분들께 감사드리며 비ASCII 참조를 수정하는 것 외에도 작업 명령은 다음과 같습니다.
sed -n -e '1,\|^//REPLACE TEST$|{ p; d; }' \
-e 'r replacement_file.txt' \
-e 'q' original_file.txt > original_file.txt.new && mv original_file.txt.new original_file.txt