한 줄을 두 번째 파일의 전체 텍스트로 바꾸세요. [중복]

한 줄을 두 번째 파일의 전체 텍스트로 바꾸세요. [중복]

.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

현재 줄이 파일 내용으로 대체됩니다.

관련 정보