あるファイルの文字列を別のファイルの内容全体に置き換える sed コマンド

あるファイルの文字列を別のファイルの内容全体に置き換える sed コマンド

あるファイルの文字列を別のファイルの内容全体に置き換えるsed(またはawk)コマンドを作成したいと思います。コンテンツをインポートする2番目のファイルには1行以上があります。私はこれを試しました:

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

関連情報