.sed
그럼 예를 들어보겠습니다. 다음과 같은 파일이 있습니다 file1.txt
.
A 1
B 2
C 3
두 번째 파일이 있습니다 file2.txt
.
line 1
line 2
line 3
line 2
이제 의 전체 내용을 로 바꾸려고 하므로 file1.txt
최종적으로는 다음과 같을 것입니다.
line 1
A 1
B 2
C 3
line 3
내가 생각할 수 있는 한 가지 방법은 다음과 같습니다.
sed -i "s/line 2/$(cat file1.txt)/g" file2.txt.
/
하지만 그런 다음에는 more 와 같은 특수 문자도 확인해야 합니다 . 읽을 수 있는 모든 문자는 에서 찾을 수 있다고 가정해야 합니다 file1.txt
.
그럼 제 질문으로 돌아가겠습니다. 파일의 한 줄을 두 번째 파일의 전체 내용으로 바꾸는 쉬운 방법이 있습니까? 반드시 그런 것은 아닙니다 sed
. 작업을 더 잘 수행한다면 또 다른 도구가 될 수도 있습니다 ...
답변1
sed -e '/^line 2$/{r file1.txt' -e 'd;}' file2.txt
스크립트 sed
는
/^line 2$/{
r file1.txt
d
}
파일 이름 뒤의 줄 바꿈은 필수이므로 명령줄에서 file1.txt
별도의 표현식으로 분할하면 더 쉽게 읽을 수 있습니다.-e
sed '/^line 2$/{r file1.txt
d;}' file2.txt
스크립트는 내용이 있는 줄을 찾습니다 line 2
. 이것이 발견되면 file1.txt
즉시 내용을 출력하고 원래 행을 삭제합니다.
를 사용하면 sed -i
인라인으로 변경됩니다 file2.txt
(권장되지 않음).
답변2
vi를 사용하세요
해당 라인으로 이동하여 다음을 수행하십시오.
!!cat filename
현재 줄이 파일 내용으로 대체됩니다.