한 파일의 문자열을 다른 파일의 전체 내용으로 바꾸는 sed 명령

한 파일의 문자열을 다른 파일의 전체 내용으로 바꾸는 sed 명령

한 파일의 문자열을 다른 파일의 전체 내용으로 바꾸는 sed(또는 awk) 명령을 작성하고 싶습니다. 콘텐츠를 가져오려는 두 번째 파일에는 한 줄 이상이 있습니다. 나는 이것을 시도했습니다 :

sed -e "s/PLACEHOLDER/$(sed 's:/:\\/:g' TestOutput.txt)/" SQLInput.txt

그런데 오류가 난다.sed: -e expression #1, char 22: unterminated 's' command

답변1

노력하다

sed -i '/PLACEHOLDER/ r TestOutput.txt' SQLInput.txt

어디

  • -i제자리에서 편집
  • /PLACEHOLDER/검색 모드
  • r TestOutput.txt파일 읽기

/PLACEHOLDER/삭제되지 않으니 참고하세요 .

삭제해

sed -i -e '/PLACEHOLDER/ r TestOutput.txt' -e s/PLACEHOLDER// SQLInput.txt

어디

  • -e /PLACEHOLDER/dPLACEHOLDER를 사용하여 전체 행을 삭제합니다.
  • -e s/PLACEHOLDER//PLACEHOLDER 문자열이 삭제됩니다.

답변2

이 경우 sed 코드는 더 간단하지만 문제로 인해 awk 태그도 있습니다.

awk 'function readfile (file) { getline var < file ; return var }
     BEGIN { RS="^$" }; gsub(/PLACEHOLDER/,readfile("TestOutput.txt"))
' SQLInput.txt

관련 정보