sed는 파일의 단어를 다른 파일의 내용으로 대체합니까? [복사]

sed는 파일의 단어를 다른 파일의 내용으로 대체합니까? [복사]

두 개의 파일 file1& file2.

파일 1의 내용:

Text1
Text2
Text3

파일 2의 내용:

Sample1 
Sample2
Sample3

file1Text1의 "from"이라는 단어를 content 로 바꾸고 싶습니다 file2. 다음 명령을 시도했습니다.

sed -i 's/Text1/r file2/g' file1
sed -e 's/Text1/`cat file1`/' < file2

둘 다 작동하지 않습니다. 내가 무엇을 놓치고 있습니까?

답변1

전체 척추가 아닌 하나만 교체하려는 경우 word몇 가지 트릭을 사용해야 합니다.

sed "s/100/$(cat -E file2 |tr -d '\n')/;s/\\$/\n/g" file1

또는

sed -e s/100/$(tr \\n $ < file2)/ -e s/\\$/\\n/g file1

주요 아이디어 sed편집기이므로 여러 줄 문자열을 허용할 수 없습니다(즉,개행 문자 포함) 대부분의 경우. 요령은 교체되는 파일에서 개행 문자를 제거하고 교체한 다음 다시 넣는 것입니다.

답변2

file1을 file2의 내용으로 바꾸려는 경우 다음 중 하나가 작동합니다.

cat file2 > file1

cp file2 file1

관련 정보