한 파일의 문자열을 다른 파일의 전체 내용으로 바꾸는 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/d
PLACEHOLDER를 사용하여 전체 행을 삭제합니다.-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