我有两个文件。我想在一些代码之间将第一个文件(file1
)的内容插入到第二个文件(file2
)中(第二个文件是一个脚本)。例如第二个文件应该是这样的
upcode...
#upcode ends here
file1 content
downcode ...
upcode#upcode ends here
和 downcode 永远不应该改变。
如何做到这一点?
你可以试试sed
:
sed -e '/file1 content/{r file1' -e 'd}' file2
/pattern/
: 匹配行的模式r file1
:读取文件1d
: 删除行注意:您可以添加-i
选项以就地更改 file2。
这是一个执行此操作的脚本(请注意,您的开始标记在文件中必须是唯一的)--
#!/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.
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