我想编写一个 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