在bash中合并行

在bash中合并行,bash,Bash,我想编写一个脚本来恢复文件,但保留创建备份文件后可能进行的更改 更多细节:在某个时刻,我创建了一个文件(file_orig)的备份。也对原始文件进行一些更改(文件\u我的\u更改)。之后,可以再次更改原始文件(文件\u其他\u更改),但在恢复后,我希望有备份文件,以及其他更改(文件\u原始+文件\u添加\u更改)。一般来说,仅支持我的更改 我说的是grub.cfg文件,因此预期可能的更改将是添加或删除行的一部分 这是否可以通过bash脚本来完成 我有两个想法: 在我要更改的行上方添加一些注释,然

我想编写一个脚本来恢复文件,但保留创建备份文件后可能进行的更改

更多细节:在某个时刻,我创建了一个文件(file_orig)的备份。也对原始文件进行一些更改(文件\u我的\u更改)。之后,可以再次更改原始文件(文件\u其他\u更改),但在恢复后,我希望有备份文件,以及其他更改(文件\u原始+文件\u添加\u更改)。一般来说,仅支持我的更改

我说的是grub.cfg文件,因此预期可能的更改将是添加或删除行的一部分

这是否可以通过bash脚本来完成

我有两个想法:

  • 在我要更改的行上方添加一些注释,然后在重新存储之前(如果该行与已备份文件中的行不同)阅读注释,这将告诉我要从该行中删除的内容

  • 如果有一种方法可以只显示与文件源不同的行的一部分,并显示文件附加的更改,则可以将该行替换为与文件源不同的行+不同的部分。但我不确定这是否可能做到

  • “例子”

    第1行:这是第1行

    第二行:这是另一行

    是否可以只显示“另一个”

    当然,任何其他想法都是受欢迎的


    谢谢!

    不清楚,但是如果您使用的是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命令,因此它不会有多大帮助,但是可以尝试和学习新的东西。再次感谢您的帮助。