首页 > 解决方案 > Bash / ZSH - 如何从特定行复制到文件末尾,然后粘贴到另一个文件的第 1 行,同时保留该文件中的所有文本

问题描述

我正在尝试将 bash 脚本添加到自动编译变更日志的 Azure Devops 管道中。

进行 PR 时,将有一个文件提交调用pr-changelog.md。我希望从特定行开始复制此文件中的所有文本,例如第 6 行。然后我希望将其粘贴到另一个名为changelog.md第 1 行的文件中,将该文件中的所有文本向下移动并保留它。这两个文件都将位于我的文件夹的根目录中。

到目前为止,我已经看到了类似和建议的命令cp,但我不确定如何定位这些特定文件并在最后一步粘贴以始终保留已经存在的内容。sedawk

我的 bash 脚本应该使用什么来实现这一点?

标签: linuxbashazure-devops

解决方案


我会使用以下内容:

cat <(tail -n+7 pr-changelog.md) changelog.md > output
mv output changelog.md

tail返回pr-changelog.md文件的结尾,在使用时从第 7 行开始-n+7
<(...)是进程替换,将返回命令的输出流,可由cat.
我们将其连接到当前changelog.md文件以获取新文件。

小心不要尝试在一个操作中执行它:会在读取之前> changelog.md覆盖 的内容。changelog.mdcat


推荐阅读