あるファイルの文字列を別のファイルの内容全体に置き換える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/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