0

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

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

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

如何做到这一点?

4

3 回答 3

3

你可以试试sed

sed -e '/file1 content/{r file1' -e 'd}' file2
  • /pattern/: 匹配行的模式
  • r file1:读取文件1
  • d: 删除行

注意:您可以添加-i选项以就地更改 file2。

于 2013-05-15T01:49:52.380 回答
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. 
于 2013-05-15T01:49:40.663 回答
1
while IFS= read -r f2line; do
    echo "$f2line"
    [[ "$f2line" = "#upcode ends here" ]] && cat file1
done < file2 > merged_file

或就地编辑 file2

ed file2 <<END
/#upcode ends here/ r file1
w
q
END
于 2013-05-15T02:47:27.960 回答