如何用另一个文本文件替换标记之间的文本文件部分?

如何用另一个文本文件替换标记之间的文本文件部分?

假设我有一个这样的文本文件:

# custom content section
a
b

### BEGIN GENERATED CONTENT
c
d
### END GENERATED CONTENT

我想用GENERATED CONTENT另一个文件的内容替换标签之间的部分。

做到这一点最简单的方法是什么?

答案1

lead='^### BEGIN GENERATED CONTENT$'
tail='^### END GENERATED CONTENT$'
sed -e "/$lead/,/$tail/{ /$lead/{p; r insert_file
        }; /$tail/p; d }"  existing_file

答案2

newContent=`cat new_file`
perl -0777 -i -pe "s/(### BEGIN GENERATED CONTENT\\n).*(\\n### END GENERATED CONTENT)/\$1$newContent\$2/s" existing_file

答案3

使用 heredoc 和 ed 行编辑器:

ed -s FILE1 <<EOF
/### BEGIN GENERATED/+,/### END GENERATED/-d
/### BEGIN GENERATED/ r FILE2
w
q
EOF

heredoc 中的第一行是删除 ( d) 之后的行 ( +)### BEGIN GENERATED和之前的行 ( -)### END GENERATED...

第二行是FILE2在该行后面插入### BEGIN GENERATED

答案4

下面是使用 编辑行编辑器 使用自动生成的内容(例如:目录)替换/更新文本文件中多行文本的一部分

相关内容