![sed는 파일의 단어를 다른 파일의 내용으로 대체합니까? [복사]](https://linux55.com/image/47506/sed%EB%8A%94%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EB%8B%A8%EC%96%B4%EB%A5%BC%20%EB%8B%A4%EB%A5%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EB%82%B4%EC%9A%A9%EC%9C%BC%EB%A1%9C%20%EB%8C%80%EC%B2%B4%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
두 개의 파일 file1
& file2
.
파일 1의 내용:
Text1
Text2
Text3
파일 2의 내용:
Sample1
Sample2
Sample3
file1
Text1의 "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