在Linux上将文件内容插入另一个文件

时间:2013-05-15 01:35:36

标签: linux file sed awk cat

我有两个文件。我想将第一个文件(file1)的内容插入到某些代码之间的第二个文件(file2)中(第二个文件是脚本)。例如,第二个文件应该如下所示

upcode...
#upcode ends here
file1 content
downcode ...

upcode #upcode ends here和downcode永远不会改变。

如何做到这一点?

3 个答案:

答案 0 :(得分:3)

您可以尝试sed

sed -e '/file1 content/{r file1' -e 'd}' file2
  • /pattern/:匹配行的模式
  • r file1:read file1
  • d:删除行

注意:您可以添加-i选项来更改文件2 inplace。

答案 1 :(得分:2)

这是一个执行此操作的脚本(请注意,您的开始标记在文件中必须是唯一的) -

#!/bin/bash

start="what you need"

touch file2.tmp

while read line
do
  if [ "$line" = "$start" ]
  then
     echo "$line" >> file2.tmp
     cat file2 >> file2.tmp
  fi
  echo "$line" >> file2.tmp
done < file1
#mv file2.tmp file1 -- moves (i.e. renames) file2.tmp as file1. 

答案 2 :(得分:1)

while IFS= read -r f2line; do
    echo "$f2line"
    [[ "$f2line" = "#upcode ends here" ]] && cat file1
done < file2 > merged_file

或编辑文件2

ed file2 <<END
/#upcode ends here/ r file1
w
q
END