假设我有一个这样的文本文件:
# 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
下面是使用 编辑行编辑器 使用自动生成的内容(例如:目录)替换/更新文本文件中多行文本的一部分