我有两个文件。我想将第一个文件(file1
)的内容插入到某些代码之间的第二个文件(file2
)中(第二个文件是脚本)。例如,第二个文件应该如下所示
upcode...
#upcode ends here
file1 content
downcode ...
upcode #upcode ends here
和downcode永远不会改变。
如何做到这一点?
答案 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