sed 命令将一个文件中的字符串替换为另一个文件的全部内容

San*_*ure 2 sed awk text-processing

我想编写一个 sed (或 awk)命令来将一个文件中的字符串替换为另一个文件的全部内容。请注意,我想要从中获取内容的第二个文件有多于一行。我试过这个:

sed -e "s/PLACEHOLDER/$(sed 's:/:\\/:g' TestOutput.txt)/" SQLInput.txt
Run Code Online (Sandbox Code Playgroud)

但有一个错误说sed: -e expression #1, char 22: unterminated 's' command

Arc*_*mar 5

尝试

sed -i '/PLACEHOLDER/ r TestOutput.txt' SQLInput.txt
Run Code Online (Sandbox Code Playgroud)

在哪里

  • -i就地编辑
  • /PLACEHOLDER/搜索模式
  • r TestOutput.txt读取文件

注意, /PLACEHOLDER/没有被删除。

将其删除

sed -i -e '/PLACEHOLDER/ r TestOutput.txt' -e s/PLACEHOLDER// SQLInput.txt
Run Code Online (Sandbox Code Playgroud)

在哪里

  • -e /PLACEHOLDER/d将使用 PLACEHOLDER 删除整行
  • -e s/PLACEHOLDER//将删除 PLACEHOLDER 字符串