在bash中合并行
我想编写一个脚本来恢复文件,但保留创建备份文件后可能进行的更改 更多细节:在某个时刻,我创建了一个文件(file_orig)的备份。也对原始文件进行一些更改(文件\u我的\u更改)。之后,可以再次更改原始文件(文件\u其他\u更改),但在恢复后,我希望有备份文件,以及其他更改(文件\u原始+文件\u添加\u更改)。一般来说,仅支持我的更改 我说的是grub.cfg文件,因此预期可能的更改将是添加或删除行的一部分 这是否可以通过bash脚本来完成 我有两个想法:在bash中合并行,bash,Bash,我想编写一个脚本来恢复文件,但保留创建备份文件后可能进行的更改 更多细节:在某个时刻,我创建了一个文件(file_orig)的备份。也对原始文件进行一些更改(文件\u我的\u更改)。之后,可以再次更改原始文件(文件\u其他\u更改),但在恢复后,我希望有备份文件,以及其他更改(文件\u原始+文件\u添加\u更改)。一般来说,仅支持我的更改 我说的是grub.cfg文件,因此预期可能的更改将是添加或删除行的一部分 这是否可以通过bash脚本来完成 我有两个想法: 在我要更改的行上方添加一些注释,然
谢谢!不清楚,但是如果您使用的是bash脚本,您可以在2个编辑的文件和最后一个文件上运行
diff
,并将输出保存到您想要保存的地方?这意味着您有一份更改的副本
或者像其他人一样使用git。一种可能是使用POSIX命令和
- 创建备份:
cp operational-file operational-file.001
- 编辑操作文件
- 根据差异创建修补程序:
diff -u operational-file.001 operational-file > operational-file.patch001
- 再次复制操作文件
cp operational-file operational-file.002
- 再次编辑操作文件
cp operational-file operational-file.002
diff -u operational-file.002 operational-file > operational-file.patch002
patch.001
中的更改,则:
cp operational-file.001 operational-file
patch -i patch.002
这将只对原始文件应用第二组更改,因为没有重叠
考虑使用版本控制系统来保存文件更改的记录。考虑使用日期/时间戳而不是文件名上的版本号。请将您的问题显示出来。您应该至少包括一个大纲(但最好是A)。对于您遇到问题的代码,我们可以尝试帮助您解决具体问题。您还应该阅读。当您谈论grub.cfg时,最好告诉我们您实际要做什么?您通常不需要手动编辑此文件,因为提供了其他文件以允许您实现更改,因此hey每次更新时都会发生。这是一个标准的x/y问题,您没有告诉我们您真正想要什么。对于
git
,这听起来是一个不错的工作……嗨,乔纳森,我尝试了您的建议,但我最终得到了操作文件和原始内容,以及比较操作文件中不存在的行的补丁.002,因此命令失败。我尝试的是拥有以下文件内容:操作文件:a;第一次更新:a b;第二次更新:a b c;在恢复之后,我希望最终得到内容:a c;尽管这对我来说非常有趣,而且是新的(因此感谢您分享),在脚本应该工作的环境中,我没有patch命令,因此它不会有多大帮助,但是可以尝试和学习新的东西。再次感谢您的帮助。